commit: 75972e200d033429bf9d34793ad3ffc813042347
parent d0d838638c8b49514c8bf093d6c76fea98019971
Author: Remita Amine <remitamine@gmail.com>
Date: Fri, 1 Jan 2021 20:21:59 +0100
[vvvvid] fix season metadata extraction(#18130)
Diffstat:
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/youtube_dl/extractor/vvvvid.py b/youtube_dl/extractor/vvvvid.py
@@ -25,7 +25,6 @@ class VVVVIDIE(InfoExtractor):
'duration': 239,
'series': '"Perché dovrei guardarlo?" di Dario Moccia',
'season_id': '437',
- 'season_number': 1,
'episode': 'Ping Pong',
'episode_number': 1,
'episode_id': '3334',
@@ -75,7 +74,6 @@ class VVVVIDIE(InfoExtractor):
def _extract_common_video_info(self, video_data):
return {
'thumbnail': video_data.get('thumbnail'),
- 'episode_number': int_or_none(video_data.get('number')),
'episode_id': str_or_none(video_data.get('id')),
}
@@ -145,6 +143,17 @@ class VVVVIDIE(InfoExtractor):
return d
+ info = {}
+
+ def metadata_from_url(r_url):
+ if not info and r_url:
+ mobj = re.search(r'_(?:S(\d+))?Ep(\d+)', r_url)
+ if mobj:
+ info['episode_number'] = int(mobj.group(2))
+ season_number = mobj.group(1)
+ if season_number:
+ info['season_number'] = int(season_number)
+
for quality in ('_sd', ''):
embed_code = video_data.get('embed_info' + quality)
if not embed_code:
@@ -166,9 +175,12 @@ class VVVVIDIE(InfoExtractor):
else:
formats.extend(self._extract_wowza_formats(
'http://sb.top-ix.org/videomg/_definst_/mp4:%s/playlist.m3u8' % embed_code, video_id))
+ metadata_from_url(embed_code)
+
self._sort_formats(formats)
- info = self._extract_common_video_info(video_data)
+ metadata_from_url(video_data.get('thumbnail'))
+ info.update(self._extract_common_video_info(video_data))
info.update({
'id': video_id,
'title': title,
@@ -176,7 +188,6 @@ class VVVVIDIE(InfoExtractor):
'duration': int_or_none(video_data.get('length')),
'series': video_data.get('show_title'),
'season_id': season_id,
- 'season_number': video_data.get('season_number'),
'episode': title,
'view_count': int_or_none(video_data.get('views')),
'like_count': int_or_none(video_data.get('video_likes')),
@@ -211,7 +222,6 @@ class VVVVIDShowIE(VVVVIDIE):
entries = []
for season in (seasons or []):
- season_number = int_or_none(season.get('number'))
episodes = season.get('episodes') or []
for episode in episodes:
if episode.get('playable') is False:
@@ -227,7 +237,6 @@ class VVVVIDShowIE(VVVVIDIE):
'url': '/'.join([base_url, season_id, video_id]),
'title': episode.get('title'),
'description': episode.get('description'),
- 'season_number': season_number,
'season_id': season_id,
})
entries.append(info)