mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 00:20:47 +00:00 
			
		
		
		
	[youtube:search_url] Reimplement in terms of youtube:playlistbase
This commit is contained in:
		@@ -2139,10 +2139,11 @@ class YoutubeSearchDateIE(YoutubeSearchIE):
 | 
			
		||||
    _EXTRA_QUERY_ARGS = {'search_sort': 'video_date_uploaded'}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class YoutubeSearchURLIE(InfoExtractor):
 | 
			
		||||
class YoutubeSearchURLIE(YoutubePlaylistBaseInfoExtractor):
 | 
			
		||||
    IE_DESC = 'YouTube.com search URLs'
 | 
			
		||||
    IE_NAME = 'youtube:search_url'
 | 
			
		||||
    _VALID_URL = r'https?://(?:www\.)?youtube\.com/results\?(.*?&)?(?:search_query|q)=(?P<query>[^&]+)(?:[&]|$)'
 | 
			
		||||
    _VIDEO_RE = r'href="\s*/watch\?v=(?P<id>[0-9A-Za-z_-]{11})(?:[^"]*"[^>]+\btitle="(?P<title>[^"]+))?'
 | 
			
		||||
    _TESTS = [{
 | 
			
		||||
        'url': 'https://www.youtube.com/results?baz=bar&search_query=youtube-dl+test+video&filters=video&lclk=video',
 | 
			
		||||
        'playlist_mincount': 5,
 | 
			
		||||
@@ -2157,32 +2158,8 @@ class YoutubeSearchURLIE(InfoExtractor):
 | 
			
		||||
    def _real_extract(self, url):
 | 
			
		||||
        mobj = re.match(self._VALID_URL, url)
 | 
			
		||||
        query = compat_urllib_parse_unquote_plus(mobj.group('query'))
 | 
			
		||||
 | 
			
		||||
        webpage = self._download_webpage(url, query)
 | 
			
		||||
        result_code = self._search_regex(
 | 
			
		||||
            r'(?s)<ol[^>]+class="item-section"(.*?)</ol>', webpage, 'result HTML')
 | 
			
		||||
 | 
			
		||||
        part_codes = re.findall(
 | 
			
		||||
            r'(?s)<h3[^>]+class="[^"]*yt-lockup-title[^"]*"[^>]*>(.*?)</h3>', result_code)
 | 
			
		||||
        entries = []
 | 
			
		||||
        for part_code in part_codes:
 | 
			
		||||
            part_title = self._html_search_regex(
 | 
			
		||||
                [r'(?s)title="([^"]+)"', r'>([^<]+)</a>'], part_code, 'item title', fatal=False)
 | 
			
		||||
            part_url_snippet = self._html_search_regex(
 | 
			
		||||
                r'(?s)href="([^"]+)"', part_code, 'item URL')
 | 
			
		||||
            part_url = compat_urlparse.urljoin(
 | 
			
		||||
                'https://www.youtube.com/', part_url_snippet)
 | 
			
		||||
            entries.append({
 | 
			
		||||
                '_type': 'url',
 | 
			
		||||
                'url': part_url,
 | 
			
		||||
                'title': part_title,
 | 
			
		||||
            })
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
            '_type': 'playlist',
 | 
			
		||||
            'entries': entries,
 | 
			
		||||
            'title': query,
 | 
			
		||||
        }
 | 
			
		||||
        return self.playlist_result(self._process_page(webpage), playlist_title=query)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class YoutubeShowIE(YoutubePlaylistsBaseInfoExtractor):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user