mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 00:25:15 +00:00 
			
		
		
		
	[youtube:toplist] Remove extractor
They use now normal playlists (their id is PL*).
This commit is contained in:
		@@ -546,7 +546,6 @@ from .youtube import (
 | 
				
			|||||||
    YoutubeSearchURLIE,
 | 
					    YoutubeSearchURLIE,
 | 
				
			||||||
    YoutubeShowIE,
 | 
					    YoutubeShowIE,
 | 
				
			||||||
    YoutubeSubscriptionsIE,
 | 
					    YoutubeSubscriptionsIE,
 | 
				
			||||||
    YoutubeTopListIE,
 | 
					 | 
				
			||||||
    YoutubeTruncatedIDIE,
 | 
					    YoutubeTruncatedIDIE,
 | 
				
			||||||
    YoutubeTruncatedURLIE,
 | 
					    YoutubeTruncatedURLIE,
 | 
				
			||||||
    YoutubeUserIE,
 | 
					    YoutubeUserIE,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1206,9 +1206,6 @@ class YoutubePlaylistIE(YoutubeBaseInfoExtractor):
 | 
				
			|||||||
        if playlist_id.startswith('RD'):
 | 
					        if playlist_id.startswith('RD'):
 | 
				
			||||||
            # Mixes require a custom extraction process
 | 
					            # Mixes require a custom extraction process
 | 
				
			||||||
            return self._extract_mix(playlist_id)
 | 
					            return self._extract_mix(playlist_id)
 | 
				
			||||||
        if playlist_id.startswith('TL'):
 | 
					 | 
				
			||||||
            raise ExtractorError('For downloading YouTube.com top lists, use '
 | 
					 | 
				
			||||||
                                 'the "yttoplist" keyword, for example "youtube-dl \'yttoplist:music:Top Tracks\'"', expected=True)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        url = self._TEMPLATE_URL % playlist_id
 | 
					        url = self._TEMPLATE_URL % playlist_id
 | 
				
			||||||
        page = self._download_webpage(url, playlist_id)
 | 
					        page = self._download_webpage(url, playlist_id)
 | 
				
			||||||
@@ -1254,49 +1251,6 @@ class YoutubePlaylistIE(YoutubeBaseInfoExtractor):
 | 
				
			|||||||
        return self.playlist_result(url_results, playlist_id, playlist_title)
 | 
					        return self.playlist_result(url_results, playlist_id, playlist_title)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class YoutubeTopListIE(YoutubePlaylistIE):
 | 
					 | 
				
			||||||
    IE_NAME = 'youtube:toplist'
 | 
					 | 
				
			||||||
    IE_DESC = ('YouTube.com top lists, "yttoplist:{channel}:{list title}"'
 | 
					 | 
				
			||||||
               ' (Example: "yttoplist:music:Top Tracks")')
 | 
					 | 
				
			||||||
    _VALID_URL = r'yttoplist:(?P<chann>.*?):(?P<title>.*?)$'
 | 
					 | 
				
			||||||
    _TESTS = [{
 | 
					 | 
				
			||||||
        'url': 'yttoplist:music:Trending',
 | 
					 | 
				
			||||||
        'playlist_mincount': 5,
 | 
					 | 
				
			||||||
        'skip': 'Only works for logged-in users',
 | 
					 | 
				
			||||||
    }]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def _real_extract(self, url):
 | 
					 | 
				
			||||||
        mobj = re.match(self._VALID_URL, url)
 | 
					 | 
				
			||||||
        channel = mobj.group('chann')
 | 
					 | 
				
			||||||
        title = mobj.group('title')
 | 
					 | 
				
			||||||
        query = compat_urllib_parse.urlencode({'title': title})
 | 
					 | 
				
			||||||
        channel_page = self._download_webpage(
 | 
					 | 
				
			||||||
            'https://www.youtube.com/%s' % channel, title)
 | 
					 | 
				
			||||||
        link = self._html_search_regex(
 | 
					 | 
				
			||||||
            r'''(?x)
 | 
					 | 
				
			||||||
                <a\s+href="([^"]+)".*?>\s*
 | 
					 | 
				
			||||||
                <span\s+class="branded-page-module-title-text">\s*
 | 
					 | 
				
			||||||
                <span[^>]*>.*?%s.*?</span>''' % re.escape(query),
 | 
					 | 
				
			||||||
            channel_page, 'list')
 | 
					 | 
				
			||||||
        url = compat_urlparse.urljoin('https://www.youtube.com/', link)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        video_re = r'data-index="\d+".*?data-video-id="([0-9A-Za-z_-]{11})"'
 | 
					 | 
				
			||||||
        ids = []
 | 
					 | 
				
			||||||
        # sometimes the webpage doesn't contain the videos
 | 
					 | 
				
			||||||
        # retry until we get them
 | 
					 | 
				
			||||||
        for i in itertools.count(0):
 | 
					 | 
				
			||||||
            msg = 'Downloading Youtube mix'
 | 
					 | 
				
			||||||
            if i > 0:
 | 
					 | 
				
			||||||
                msg += ', retry #%d' % i
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            webpage = self._download_webpage(url, title, msg)
 | 
					 | 
				
			||||||
            ids = orderedSet(re.findall(video_re, webpage))
 | 
					 | 
				
			||||||
            if ids:
 | 
					 | 
				
			||||||
                break
 | 
					 | 
				
			||||||
        url_results = self._ids_to_results(ids)
 | 
					 | 
				
			||||||
        return self.playlist_result(url_results, playlist_title=title)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class YoutubeChannelIE(InfoExtractor):
 | 
					class YoutubeChannelIE(InfoExtractor):
 | 
				
			||||||
    IE_DESC = 'YouTube.com channels'
 | 
					    IE_DESC = 'YouTube.com channels'
 | 
				
			||||||
    _VALID_URL = r'https?://(?:youtu\.be|(?:\w+\.)?youtube(?:-nocookie)?\.com)/channel/(?P<id>[0-9A-Za-z_-]+)'
 | 
					    _VALID_URL = r'https?://(?:youtu\.be|(?:\w+\.)?youtube(?:-nocookie)?\.com)/channel/(?P<id>[0-9A-Za-z_-]+)'
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user