diff options
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 29 | 
1 files changed, 3 insertions, 26 deletions
| diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 44f98d294..b7c3cb63f 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -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): | 
