mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-03 23:57:06 -05:00 
			
		
		
		
	[funk:channel] Improve byChannelAlias extraction (closes #17142)
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
				
			|||||||
# coding: utf-8
 | 
					# coding: utf-8
 | 
				
			||||||
from __future__ import unicode_literals
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import itertools
 | 
				
			||||||
import re
 | 
					import re
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .common import InfoExtractor
 | 
					from .common import InfoExtractor
 | 
				
			||||||
@@ -125,17 +126,31 @@ class FunkChannelIE(FunkBaseIE):
 | 
				
			|||||||
        # Id-based channels are currently broken on their side: webplayer
 | 
					        # Id-based channels are currently broken on their side: webplayer
 | 
				
			||||||
        # tries to process them via byChannelAlias endpoint and fails
 | 
					        # tries to process them via byChannelAlias endpoint and fails
 | 
				
			||||||
        # predictably.
 | 
					        # predictably.
 | 
				
			||||||
        by_channel_alias = self._download_json(
 | 
					        for page_num in itertools.count():
 | 
				
			||||||
            'https://www.funk.net/api/v3.1/webapp/videos/byChannelAlias/%s'
 | 
					            by_channel_alias = self._download_json(
 | 
				
			||||||
            % channel_id,
 | 
					                'https://www.funk.net/api/v3.1/webapp/videos/byChannelAlias/%s'
 | 
				
			||||||
            'Downloading byChannelAlias JSON', headers=headers, query={
 | 
					                % channel_id,
 | 
				
			||||||
                'size': 100,
 | 
					                'Downloading byChannelAlias JSON page %d' % (page_num + 1),
 | 
				
			||||||
            }, fatal=False)
 | 
					                headers=headers, query={
 | 
				
			||||||
        if by_channel_alias:
 | 
					                    'filterFsk': 'false',
 | 
				
			||||||
 | 
					                    'sort': 'creationDate,desc',
 | 
				
			||||||
 | 
					                    'size': 100,
 | 
				
			||||||
 | 
					                    'page': page_num,
 | 
				
			||||||
 | 
					                }, fatal=False)
 | 
				
			||||||
 | 
					            if not by_channel_alias:
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
            video_list = try_get(
 | 
					            video_list = try_get(
 | 
				
			||||||
                by_channel_alias, lambda x: x['_embedded']['videoList'], list)
 | 
					                by_channel_alias, lambda x: x['_embedded']['videoList'], list)
 | 
				
			||||||
            if video_list:
 | 
					            if not video_list:
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
                video = next(r for r in video_list if r.get('alias') == alias)
 | 
					                video = next(r for r in video_list if r.get('alias') == alias)
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            except StopIteration:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					            if not try_get(
 | 
				
			||||||
 | 
					                    by_channel_alias, lambda x: x['_links']['next']):
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not video:
 | 
					        if not video:
 | 
				
			||||||
            by_id_list = self._download_json(
 | 
					            by_id_list = self._download_json(
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user