]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/fc2.py
[cleanup] Add more ruff rules (#10149)
[yt-dlp.git] / yt_dlp / extractor / fc2.py
index 54a83aa16a854545684c4a1e3bf0c9a213ebd825..eac70f6a96b1fc3f014d90b7fa87e557ff89ec45 100644 (file)
@@ -1,19 +1,11 @@
-# coding: utf-8
-from __future__ import unicode_literals
-
 import re
+import urllib.parse
 
 from .common import InfoExtractor
-from ..compat import (
-    compat_parse_qs,
-)
+from ..networking import Request
 from ..utils import (
     ExtractorError,
-    WebSocketsWrapper,
-    has_websockets,
     js_to_json,
-    sanitized_Request,
-    std_headers,
     traverse_obj,
     update_url_query,
     urlencode_postdata,
@@ -63,7 +55,7 @@ def _login(self):
         }
 
         login_data = urlencode_postdata(login_form_strs)
-        request = sanitized_Request(
+        request = Request(
             'https://secure.id.fc2.com/index.php?mode=login&switch_language=en', login_data)
 
         login_results = self._download_webpage(request, None, note='Logging in', errnote='Unable to log in')
@@ -72,7 +64,7 @@ def _login(self):
             return False
 
         # this is also needed
-        login_redir = sanitized_Request('http://id.fc2.com/?mode=redirect&login=done')
+        login_redir = Request('http://id.fc2.com/?mode=redirect&login=done')
         self._download_webpage(
             login_redir, None, note='Login redirect', errnote='Login redirect failed')
 
@@ -84,7 +76,7 @@ def _real_extract(self, url):
         webpage = None
         if not url.startswith('fc2:'):
             webpage = self._download_webpage(url, video_id)
-            self._downloader.cookiejar.clear_session_cookies()  # must clear
+            self.cookiejar.clear_session_cookies()  # must clear
             self._login()
 
         title, thumbnail, description = None, None, None
@@ -100,7 +92,7 @@ def _real_extract(self, url):
             description = self._og_search_description(webpage, default=None)
 
         vidplaylist = self._download_json(
-            'https://video.fc2.com/api/v3/videoplaylist/%s?sh=1&fs=0' % video_id, video_id,
+            f'https://video.fc2.com/api/v3/videoplaylist/{video_id}?sh=1&fs=0', video_id,
             note='Downloading info page')
         vid_url = traverse_obj(vidplaylist, ('playlist', 'nq'))
         if not vid_url:
@@ -135,22 +127,22 @@ class FC2EmbedIE(InfoExtractor):
 
     def _real_extract(self, url):
         mobj = self._match_valid_url(url)
-        query = compat_parse_qs(mobj.group('query'))
+        query = urllib.parse.parse_qs(mobj.group('query'))
 
         video_id = query['i'][-1]
-        title = query.get('tl', ['FC2 video %s' % video_id])[0]
+        title = query.get('tl', [f'FC2 video {video_id}'])[0]
 
         sj = query.get('sj', [None])[0]
         thumbnail = None
         if sj:
             # See thumbnailImagePath() in ServerConst.as of flv2.swf
-            thumbnail = 'http://video%s-thumbnail.fc2.com/up/pic/%s.jpg' % (
+            thumbnail = 'http://video{}-thumbnail.fc2.com/up/pic/{}.jpg'.format(
                 sj, '/'.join((video_id[:6], video_id[6:8], video_id[-2], video_id[-1], video_id)))
 
         return {
             '_type': 'url_transparent',
             'ie_key': FC2IE.ie_key(),
-            'url': 'fc2:%s' % video_id,
+            'url': f'fc2:{video_id}',
             'title': title,
             'thumbnail': thumbnail,
         }
@@ -173,10 +165,8 @@ class FC2LiveIE(InfoExtractor):
     }]
 
     def _real_extract(self, url):
-        if not has_websockets:
-            raise ExtractorError('websockets library is not available. Please install it.', expected=True)
         video_id = self._match_id(url)
-        webpage = self._download_webpage('https://live.fc2.com/%s/' % video_id, video_id)
+        webpage = self._download_webpage(f'https://live.fc2.com/{video_id}/', video_id)
 
         self._set_cookie('live.fc2.com', 'js-player_size', '1')
 
@@ -185,7 +175,7 @@ def _real_extract(self, url):
                 'channel': '1',
                 'profile': '1',
                 'user': '1',
-                'streamid': video_id
+                'streamid': video_id,
             }), note='Requesting member info')
 
         control_server = self._download_json(
@@ -205,15 +195,11 @@ def _real_extract(self, url):
         ws_url = update_url_query(control_server['url'], {'control_token': control_server['control_token']})
         playlist_data = None
 
-        self.to_screen('%s: Fetching HLS playlist info via WebSocket' % video_id)
-        ws = WebSocketsWrapper(ws_url, {
-            'Cookie': str(self._get_cookies('https://live.fc2.com/'))[12:],
+        ws = self._request_webpage(Request(ws_url, headers={
             'Origin': 'https://live.fc2.com',
-            'Accept': '*/*',
-            'User-Agent': std_headers['User-Agent'],
-        })
+        }), video_id, note='Fetching HLS playlist info via WebSocket')
 
-        self.write_debug('[debug] Sending HLS server request')
+        self.write_debug('Sending HLS server request')
 
         while True:
             recv = ws.recv()
@@ -235,13 +221,10 @@ def _real_extract(self, url):
             if not data or not isinstance(data, dict):
                 continue
             if data.get('name') == '_response_' and data.get('id') == 1:
-                self.write_debug('[debug] Goodbye.')
+                self.write_debug('Goodbye')
                 playlist_data = data
                 break
-            elif self._downloader.params.get('verbose', False):
-                if len(recv) > 100:
-                    recv = recv[:100] + '...'
-                self.to_screen('[debug] Server said: %s' % recv)
+            self.write_debug('Server said: {}{}'.format(recv[:100], '...' if len(recv) > 100 else ''))
 
         if not playlist_data:
             raise ExtractorError('Unable to fetch HLS playlist info via WebSocket')
@@ -259,7 +242,6 @@ def _real_extract(self, url):
                             'Referer': url,
                         }))
 
-        self._sort_formats(formats)
         for fmt in formats:
             fmt.update({
                 'protocol': 'fc2_live',