mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-10-31 09:43:32 +00:00 
			
		
		
		
	[lbry] add support for channel filters(closes #28385)
This commit is contained in:
		
							parent
							
								
									bae7dbf78b
								
							
						
					
					
						commit
						64ed3af328
					
				| @ -6,8 +6,10 @@ import json | ||||
| 
 | ||||
| from .common import InfoExtractor | ||||
| from ..compat import ( | ||||
|     compat_parse_qs, | ||||
|     compat_str, | ||||
|     compat_urllib_parse_unquote, | ||||
|     compat_urllib_parse_urlparse, | ||||
| ) | ||||
| from ..utils import ( | ||||
|     determine_ext, | ||||
| @ -186,17 +188,18 @@ class LBRYChannelIE(LBRYBaseIE): | ||||
|     }] | ||||
|     _PAGE_SIZE = 50 | ||||
| 
 | ||||
|     def _fetch_page(self, claim_id, url, page): | ||||
|     def _fetch_page(self, claim_id, url, params, page): | ||||
|         page += 1 | ||||
|         result = self._call_api_proxy( | ||||
|             'claim_search', claim_id, { | ||||
|         page_params = { | ||||
|             'channel_ids': [claim_id], | ||||
|             'claim_type': 'stream', | ||||
|             'no_totals': True, | ||||
|             'page': page, | ||||
|             'page_size': self._PAGE_SIZE, | ||||
|                 'stream_types': self._SUPPORTED_STREAM_TYPES, | ||||
|             }, 'page %d' % page) | ||||
|         } | ||||
|         page_params.update(params) | ||||
|         result = self._call_api_proxy( | ||||
|             'claim_search', claim_id, page_params, 'page %d' % page) | ||||
|         for item in (result.get('items') or []): | ||||
|             stream_claim_name = item.get('name') | ||||
|             stream_claim_id = item.get('claim_id') | ||||
| @ -217,8 +220,31 @@ class LBRYChannelIE(LBRYBaseIE): | ||||
|         result = self._resolve_url( | ||||
|             'lbry://' + display_id, display_id, 'channel') | ||||
|         claim_id = result['claim_id'] | ||||
|         qs = compat_parse_qs(compat_urllib_parse_urlparse(url).query) | ||||
|         content = qs.get('content', [None])[0] | ||||
|         params = { | ||||
|             'fee_amount': qs.get('fee_amount', ['>=0'])[0], | ||||
|             'order_by': { | ||||
|                 'new': ['release_time'], | ||||
|                 'top': ['effective_amount'], | ||||
|                 'trending': ['trending_group', 'trending_mixed'], | ||||
|             }[qs.get('order', ['new'])[0]], | ||||
|             'stream_types': [content] if content in ['audio', 'video'] else self._SUPPORTED_STREAM_TYPES, | ||||
|         } | ||||
|         duration = qs.get('duration', [None])[0] | ||||
|         if duration: | ||||
|             params['duration'] = { | ||||
|                 'long': '>=1200', | ||||
|                 'short': '<=240', | ||||
|             }[duration] | ||||
|         language = qs.get('language', ['all'])[0] | ||||
|         if language != 'all': | ||||
|             languages = [language] | ||||
|             if language == 'en': | ||||
|                 languages.append('none') | ||||
|             params['any_languages'] = languages | ||||
|         entries = OnDemandPagedList( | ||||
|             functools.partial(self._fetch_page, claim_id, url), | ||||
|             functools.partial(self._fetch_page, claim_id, url, params), | ||||
|             self._PAGE_SIZE) | ||||
|         result_value = result.get('value') or {} | ||||
|         return self.playlist_result( | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Remita Amine
						Remita Amine