diff options
author | biwubo <45994985+biwubo@users.noreply.github.com> | 2019-06-07 20:40:47 +0100 |
---|---|---|
committer | Sergey M <dstftw@gmail.com> | 2019-06-08 02:40:47 +0700 |
commit | 178663df528dddb1b628b70e4ad167cc97a8ada5 (patch) | |
tree | 9e23d9f1e59288c8cb82a5284c711c930c07d1d6 /youtube_dl | |
parent | ef19739e64e91bb5ca2eeccd3ff6fdefb1a98cce (diff) |
[vlive:playlist] Redirect to video extractor when no playlist is found (#20590)
Diffstat (limited to 'youtube_dl')
-rw-r--r-- | youtube_dl/extractor/vlive.py | 57 |
1 files changed, 40 insertions, 17 deletions
diff --git a/youtube_dl/extractor/vlive.py b/youtube_dl/extractor/vlive.py index f75d4e254..6bfbceef2 100644 --- a/youtube_dl/extractor/vlive.py +++ b/youtube_dl/extractor/vlive.py @@ -332,26 +332,43 @@ class VLiveChannelIE(InfoExtractor): class VLivePlaylistIE(InfoExtractor): IE_NAME = 'vlive:playlist' _VALID_URL = r'https?://(?:(?:www|m)\.)?vlive\.tv/video/(?P<video_id>[0-9]+)/playlist/(?P<id>[0-9]+)' - _TEST = { + _VIDEO_URL_TEMPLATE = 'http://www.vlive.tv/video/%s' + _TESTS = [{ + 'url': 'https://www.vlive.tv/video/117956/playlist/117963', + 'info_dict': { + 'id': '117963', + 'title': '아이돌룸(IDOL ROOM) 41회 - (여자)아이들' + }, + 'playlist_mincount': 10 + }, { 'url': 'http://www.vlive.tv/video/22867/playlist/22912', 'info_dict': { - 'id': '22912', - 'title': 'Valentine Day Message from TWICE' + 'id': '22867', + 'ext': 'mp4', + 'title': '[V LIVE] Valentine Day Message from MINA', + 'creator': "TWICE", + 'view_count': int }, - 'playlist_mincount': 9 - } + 'params': { + 'skip_download': True, + } + }] + + def _build_video_result(self, video_id, message): + self.to_screen(message) + return self.url_result( + self._VIDEO_URL_TEMPLATE % video_id, + ie=VLiveIE.ie_key(), video_id=video_id) def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) video_id, playlist_id = mobj.group('video_id', 'id') - VIDEO_URL_TEMPLATE = 'http://www.vlive.tv/video/%s' if self._downloader.params.get('noplaylist'): - self.to_screen( - 'Downloading just video %s because of --no-playlist' % video_id) - return self.url_result( - VIDEO_URL_TEMPLATE % video_id, - ie=VLiveIE.ie_key(), video_id=video_id) + return self._build_video_result( + video_id, + 'Downloading just video %s because of --no-playlist' + % video_id) self.to_screen( 'Downloading playlist %s - add --no-playlist to just download video' @@ -361,15 +378,21 @@ class VLivePlaylistIE(InfoExtractor): 'http://www.vlive.tv/video/%s/playlist/%s' % (video_id, playlist_id), playlist_id) - item_ids = self._parse_json( - self._search_regex( - r'playlistVideoSeqs\s*=\s*(\[[^]]+\])', webpage, - 'playlist video seqs'), - playlist_id) + raw_item_ids = self._search_regex( + r'playlistVideoSeqs\s*=\s*(\[[^]]+\])', webpage, + 'playlist video seqs', default=None, fatal=False) + + if not raw_item_ids: + return self._build_video_result( + video_id, + 'Downloading just video %s because no playlist was found' + % video_id) + + item_ids = self._parse_json(raw_item_ids, playlist_id) entries = [ self.url_result( - VIDEO_URL_TEMPLATE % item_id, ie=VLiveIE.ie_key(), + self._VIDEO_URL_TEMPLATE % item_id, ie=VLiveIE.ie_key(), video_id=compat_str(item_id)) for item_id in item_ids] |