]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/vvvvid.py
[extractor] Deprecate `_sort_formats`
[yt-dlp.git] / yt_dlp / extractor / vvvvid.py
index bc196f8a0acec0c8ba64fbd33a88291e5b2c0246..ed725a55d51ff73ae443aa2fe93a0098e0ae4557 100644 (file)
@@ -1,6 +1,3 @@
-# coding: utf-8
-from __future__ import unicode_literals
-
 import re
 
 from .common import InfoExtractor
@@ -64,6 +61,18 @@ class VVVVIDIE(InfoExtractor):
         'params': {
             'skip_download': True,
         },
+    }, {
+        # video_type == 'video/dash'
+        'url': 'https://www.vvvvid.it/show/683/made-in-abyss/1542/693786/nanachi',
+        'info_dict': {
+            'id': '693786',
+            'ext': 'mp4',
+            'title': 'Nanachi',
+        },
+        'params': {
+            'skip_download': True,
+            'format': 'mp4',
+        },
     }, {
         'url': 'https://www.vvvvid.it/show/434/perche-dovrei-guardarlo-di-dario-moccia/437/489048',
         'only_matching': True
@@ -98,7 +107,7 @@ def _extract_common_video_info(self, video_data):
         }
 
     def _real_extract(self, url):
-        show_id, season_id, video_id = re.match(self._VALID_URL, url).groups()
+        show_id, season_id, video_id = self._match_valid_url(url).groups()
 
         response = self._download_info(
             show_id, 'season/%s' % season_id,
@@ -205,13 +214,15 @@ def metadata_from_url(r_url):
                 })
                 is_youtube = True
                 break
+            elif video_type == 'video/dash':
+                formats.extend(self._extract_m3u8_formats(
+                    embed_code, video_id, 'mp4', m3u8_id='hls', fatal=False))
             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)
 
         if not is_youtube:
-            self._sort_formats(formats)
             info['formats'] = formats
 
         metadata_from_url(video_data.get('thumbnail'))
@@ -230,7 +241,7 @@ def metadata_from_url(r_url):
         return info
 
 
-class VVVVIDShowIE(VVVVIDIE):
+class VVVVIDShowIE(VVVVIDIE):  # XXX: Do not subclass from concrete IE
     _VALID_URL = r'(?P<base_url>%s(?P<id>\d+)(?:/(?P<show_title>[^/?&#]+))?)/?(?:[?#&]|$)' % VVVVIDIE._VALID_URL_BASE
     _TESTS = [{
         'url': 'https://www.vvvvid.it/show/156/psyco-pass',
@@ -246,7 +257,7 @@ class VVVVIDShowIE(VVVVIDIE):
     }]
 
     def _real_extract(self, url):
-        base_url, show_id, show_title = re.match(self._VALID_URL, url).groups()
+        base_url, show_id, show_title = self._match_valid_url(url).groups()
 
         seasons = self._download_info(
             show_id, 'seasons/', show_title)