[vvvvid] fix season metadata extraction(#18130)
authorRemita Amine <remitamine@gmail.com>
Fri, 1 Jan 2021 19:21:59 +0000 (20:21 +0100)
committerRemita Amine <remitamine@gmail.com>
Fri, 1 Jan 2021 19:21:59 +0000 (20:21 +0100)
youtube_dl/extractor/vvvvid.py

index 145805492e580305d45c3383baccedfa133f4ab2..f4cae7fe9c45e9670459ea16ad0a26662bee3efb 100644 (file)
@@ -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)