diff options
author | Filippo Valsorda <filippo.valsorda@gmail.com> | 2013-10-01 10:08:20 -0700 |
---|---|---|
committer | Filippo Valsorda <filippo.valsorda@gmail.com> | 2013-10-01 10:08:20 -0700 |
commit | bd8e5c7ca286418e1e4162d7be6f3a30be581e87 (patch) | |
tree | 70dff0b000092853301cbac841603f19786216c4 /youtube_dl/extractor | |
parent | c54283824c72434c31e0dcce1d09fc3259dbcdc0 (diff) | |
parent | 7c61bd36bb172485815288d44e00acb676e8eaff (diff) |
Merge pull request #1531 from rg3/no-playlist
[youtube] implement --no-playlist to only download current video
Diffstat (limited to 'youtube_dl/extractor')
-rw-r--r-- | youtube_dl/extractor/youtube.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 890667340..6580d8bf8 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -23,6 +23,7 @@ from ..utils import ( compat_urllib_error, compat_urllib_parse, compat_urllib_request, + compat_urlparse, compat_str, clean_html, @@ -1525,9 +1526,19 @@ class YoutubePlaylistIE(InfoExtractor): mobj = re.match(self._VALID_URL, url, re.VERBOSE) if mobj is None: raise ExtractorError(u'Invalid URL: %s' % url) + playlist_id = mobj.group(1) or mobj.group(2) + + # Check if it's a video-specific URL + query_dict = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query) + if 'v' in query_dict: + video_id = query_dict['v'][0] + if self._downloader.params.get('noplaylist'): + self.to_screen(u'Downloading just video %s because of --no-playlist' % video_id) + return self.url_result('https://www.youtube.com/watch?v=' + video_id, 'Youtube') + else: + self.to_screen(u'Downloading playlist PL%s - add --no-playlist to just download video %s' % (playlist_id, video_id)) # Download playlist videos from API - playlist_id = mobj.group(1) or mobj.group(2) videos = [] for page_num in itertools.count(1): |