diff options
Diffstat (limited to 'youtube_dl/extractor')
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 22 | 
1 files changed, 21 insertions, 1 deletions
diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 9943dddc1..0919bef0e 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -2270,6 +2270,19 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor):              r'(?s)<h1 class="pl-header-title[^"]*"[^>]*>\s*(.*?)\s*</h1>',              page, 'title', default=None) +        _UPLOADER_BASE = r'class=["\']pl-header-details[^>]+>\s*<li>\s*<a[^>]+\bhref=' +        uploader = self._search_regex( +            r'%s["\']/(?:user|channel)/[^>]+>([^<]+)' % _UPLOADER_BASE, +            page, 'uploader', default=None) +        mobj = re.search( +            r'%s(["\'])(?P<path>/(?:user|channel)/(?P<uploader_id>.+?))\1' % _UPLOADER_BASE, +            page) +        if mobj: +            uploader_id = mobj.group('uploader_id') +            uploader_url = compat_urlparse.urljoin(url, mobj.group('path')) +        else: +            uploader_id = uploader_url = None +          has_videos = True          if not playlist_title: @@ -2280,8 +2293,15 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor):              except StopIteration:                  has_videos = False -        return has_videos, self.playlist_result( +        playlist = self.playlist_result(              self._entries(page, playlist_id), playlist_id, playlist_title) +        playlist.update({ +            'uploader': uploader, +            'uploader_id': uploader_id, +            'uploader_url': uploader_url, +        }) + +        return has_videos, playlist      def _check_download_just_video(self, url, playlist_id):          # Check if it's a video-specific URL  | 
