[youtube:search_url] Update regexes
[youtube-dl] / youtube_dl / extractor / youtube.py
index ec3024cbd9b83d515ca8fb3a07587f1d530769a6..f420b81482a6b0684cc44b42010b02769d869cc4 100644 (file)
@@ -1698,14 +1698,14 @@ class YoutubeSearchURLIE(InfoExtractor):
 
         webpage = self._download_webpage(url, query)
         result_code = self._search_regex(
-            r'(?s)<ol id="search-results"(.*?)</ol>', webpage, u'result HTML')
+            r'(?s)<ol class="item-section"(.*?)</ol>', webpage, u'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="([^"]+)"', part_code, 'item title', fatal=False)
+                [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(
@@ -1835,6 +1835,9 @@ class YoutubeTruncatedURLIE(InfoExtractor):
     _TESTS = [{
         'url': 'http://www.youtube.com/watch?annotation_id=annotation_3951667041',
         'only_matching': True,
+    }, {
+        'url': 'http://www.youtube.com/watch?',
+        'only_matching': True,
     }]
 
     def _real_extract(self, url):