浏览代码

[youtube] Fix channel id extraction (closes #20982) (#21003)

pypy 6 年之前
父节点
当前提交
b45a9e698e
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      youtube_dl/extractor/youtube.py

+ 7 - 2
youtube_dl/extractor/youtube.py

@@ -2100,8 +2100,13 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
         else:
             self._downloader.report_warning('unable to extract uploader nickname')
 
-        channel_id = self._html_search_meta(
-            'channelId', video_webpage, 'channel id')
+        channel_id = (
+            str_or_none(video_details.get('channelId')) or
+            self._html_search_meta(
+                'channelId', video_webpage, 'channel id', default=None) or
+            self._search_regex(
+                r'data-channel-external-id=(["\'])(?P<id>(?:(?!\1).)+)\1',
+                video_webpage, 'channel id', default=None, group='id'))
         channel_url = 'http://www.youtube.com/channel/%s' % channel_id if channel_id else None
 
         # thumbnail image