diff options
| author | Sergey M․ <dstftw@gmail.com> | 2017-01-23 02:49:56 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2017-01-23 02:49:56 +0700 | 
| commit | 4201ba13e674788c36ae69fbfbffc4b246717d6a (patch) | |
| tree | 770f917ea438a0296d0fe62ec6c72ad06fd1a5be | |
| parent | 8bc0800d7cf24b17204f0fb3c6e76327ed8d527f (diff) | |
[youtube:playlist] Fix nonexistent/private playlist detection and skip private tests
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 15 | 
1 files changed, 10 insertions, 5 deletions
| diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 644653357..5202beb3e 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -1856,6 +1856,7 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor):              'title': 'YDL_Empty_List',          },          'playlist_count': 0, +        'skip': 'This playlist is private',      }, {          'note': 'Playlist with deleted videos (#651). As a bonus, the video #51 is also twice in this list.',          'url': 'https://www.youtube.com/playlist?list=PLwP_SiAcdui0KVebT0mU9Apz359a4ubsC', @@ -1887,6 +1888,7 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor):              'id': 'PLtPgu7CB4gbY9oDN3drwC3cMbJggS7dKl',          },          'playlist_count': 2, +        'skip': 'This playlist is private',      }, {          'note': 'embedded',          'url': 'https://www.youtube.com/embed/videoseries?list=PL6IaIsEjSbf96XFRuNccS_RuEXwNdsoEu', @@ -2002,11 +2004,14 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor):          for match in re.findall(r'<div class="yt-alert-message"[^>]*>([^<]+)</div>', page):              match = match.strip()              # Check if the playlist exists or is private -            if re.match(r'[^<]*(The|This) playlist (does not exist|is private)[^<]*', match): -                raise ExtractorError( -                    'The playlist doesn\'t exist or is private, use --username or ' -                    '--netrc to access it.', -                    expected=True) +            mobj = re.match(r'[^<]*(?:The|This) playlist (?P<reason>does not exist|is private)[^<]*', match) +            if mobj: +                reason = mobj.group('reason') +                message = 'This playlist %s' % reason +                if 'private' in reason: +                    message += ', use --username or --netrc to access it' +                message += '.' +                raise ExtractorError(message, expected=True)              elif re.match(r'[^<]*Invalid parameters[^<]*', match):                  raise ExtractorError(                      'Invalid parameters. Maybe URL is incorrect.', | 
