aboutsummaryrefslogtreecommitdiffstats
path: root/youtube_dl/extractor/youtube.py
diff options
context:
space:
mode:
authorRogério Brito <rbrito@ime.usp.br>2018-01-04 03:48:53 -0200
committerRogério Brito <rbrito@ime.usp.br>2018-01-04 03:48:53 -0200
commit9113dfef91df19343cf76c6274dd0a85258c1004 (patch)
tree357bea65ff97d11085714837737d0428fbf40a54 /youtube_dl/extractor/youtube.py
parent80893415fd8cecb59cb8ffbea17a183d4202f02e (diff)
parentb4a0c9f9de9d715538a1718922d6ab01a40f7ce3 (diff)
downloadyoutube-dl-9113dfef91df19343cf76c6274dd0a85258c1004.zip
youtube-dl-9113dfef91df19343cf76c6274dd0a85258c1004.tar.gz
youtube-dl-9113dfef91df19343cf76c6274dd0a85258c1004.tar.bz2
Update upstream source from tag 'upstream/2017.12.31'
Update to upstream version '2017.12.31' with Debian dir 1882f6f128562a71691f1092c6b611d46798c5c4
Diffstat (limited to 'youtube_dl/extractor/youtube.py')
-rw-r--r--youtube_dl/extractor/youtube.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py
index 9943ddd..0919bef 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