]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/vgtv.py
[cleanup] Add more ruff rules (#10149)
[yt-dlp.git] / yt_dlp / extractor / vgtv.py
index 9d6090b08e091ff1b190f481bec97780dd7a397c..1eb25530f833f8e470a873704d0808c8c381e092 100644 (file)
@@ -1,6 +1,3 @@
-# coding: utf-8
-from __future__ import unicode_literals
-
 import re
 
 from .common import InfoExtractor
 )
 
 
-class VGTVIE(XstreamIE):
+class VGTVIE(XstreamIE):  # XXX: Do not subclass from concrete IE
     IE_DESC = 'VGTV, BTTV, FTV, Aftenposten and Aftonbladet'
     _GEO_BYPASS = False
 
     _HOST_TO_APPNAME = {
+        'tv.vg.no': 'vgtv',
         'vgtv.no': 'vgtv',
         'bt.no/tv': 'bttv',
         'aftenbladet.no/tv': 'satv',
@@ -41,7 +39,7 @@ class VGTVIE(XstreamIE):
     _VALID_URL = r'''(?x)
                     (?:https?://(?:www\.)?
                     (?P<host>
-                        %s
+                        {}
                     )
                     /?
                     (?:
@@ -50,10 +48,10 @@ class VGTVIE(XstreamIE):
                         a(?:rticles)?/
                     )|
                     (?P<appname>
-                        %s
+                        {}
                     ):)
                     (?P<id>\d+)
-                    ''' % ('|'.join(_HOST_TO_APPNAME.keys()), '|'.join(_APP_NAME_TO_VENDOR.keys()))
+                    '''.format('|'.join(_HOST_TO_APPNAME.keys()), '|'.join(_APP_NAME_TO_VENDOR.keys()))
 
     _TESTS = [
         {
@@ -129,6 +127,10 @@ class VGTVIE(XstreamIE):
                 'skip_download': True,
             },
         },
+        {
+            'url': 'https://tv.vg.no/video/241779/politiets-ekstremkjoering',
+            'only_matching': True,
+        },
         {
             'url': 'http://www.bt.no/tv/#!/video/100250/norling-dette-er-forskjellen-paa-1-divisjon-og-eliteserien',
             'only_matching': True,
@@ -172,13 +174,12 @@ def _real_extract(self, url):
         vendor = self._APP_NAME_TO_VENDOR[appname]
 
         data = self._download_json(
-            'http://svp.vg.no/svp/api/v1/%s/assets/%s?appName=%s-website'
-            % (vendor, video_id, appname),
+            f'http://svp.vg.no/svp/api/v1/{vendor}/assets/{video_id}?appName={appname}-website',
             video_id, 'Downloading media JSON')
 
         if data.get('status') == 'inactive':
             raise ExtractorError(
-                'Video %s is no longer available' % video_id, expected=True)
+                f'Video {video_id} is no longer available', expected=True)
 
         info = {
             'formats': [],
@@ -201,7 +202,7 @@ def _real_extract(self, url):
         if hds_url:
             hdcore_sign = 'hdcore=3.7.0'
             f4m_formats = self._extract_f4m_formats(
-                hds_url + '?%s' % hdcore_sign, video_id, f4m_id='hds', fatal=False)
+                hds_url + f'?{hdcore_sign}', video_id, f4m_id='hds', fatal=False)
             if f4m_formats:
                 for entry in f4m_formats:
                     # URLs without the extra param induce an 404 error
@@ -223,7 +224,7 @@ def _real_extract(self, url):
                     'width': int(mobj.group(1)),
                     'height': int(mobj.group(2)),
                     'tbr': tbr,
-                    'format_id': 'mp4-%s' % tbr,
+                    'format_id': f'mp4-{tbr}',
                 })
             formats.append(format_info)
 
@@ -236,8 +237,6 @@ def _real_extract(self, url):
                 raise self.raise_geo_restricted(
                     countries=[host.rpartition('.')[-1].partition('/')[0].upper()])
 
-        self._sort_formats(info['formats'])
-
         info.update({
             'id': video_id,
             'title': data['title'],
@@ -275,7 +274,7 @@ def _real_extract(self, url):
         webpage = self._download_webpage(url, self._match_id(url))
         video_id = self._search_regex(
             r'<video[^>]+data-id="(\d+)"', webpage, 'video id')
-        return self.url_result('bttv:%s' % video_id, 'VGTV')
+        return self.url_result(f'bttv:{video_id}', 'VGTV')
 
 
 class BTVestlendingenIE(InfoExtractor):
@@ -308,4 +307,4 @@ class BTVestlendingenIE(InfoExtractor):
     }]
 
     def _real_extract(self, url):
-        return self.url_result('bttv:%s' % self._match_id(url), 'VGTV')
+        return self.url_result(f'bttv:{self._match_id(url)}', 'VGTV')