From 70a45aa336081ee1d273d06cf2b8bb48f7aa4e80 Mon Sep 17 00:00:00 2001 From: Nikolay Fedorov <40500428+swayll@users.noreply.github.com> Date: Fri, 1 Aug 2025 22:35:28 +0300 Subject: [PATCH] Double quotes fixed --- yt_dlp/extractor/smotrim.py | 121 ++++++++++++++++++------------------ 1 file changed, 61 insertions(+), 60 deletions(-) diff --git a/yt_dlp/extractor/smotrim.py b/yt_dlp/extractor/smotrim.py index 03253f44b..a2cfd245e 100644 --- a/yt_dlp/extractor/smotrim.py +++ b/yt_dlp/extractor/smotrim.py @@ -5,114 +5,115 @@ class SmotrimIE(InfoExtractor): - _VALID_URL = r"https?://smotrim\.ru/(?Pbrand|video|article|live|channel)/(?P[0-9]+)" + _VALID_URL = r'https?://smotrim\.ru/(?Pbrand|video|article|live|channel)/(?P[0-9]+)' _TESTS = [ { - "url": "https://smotrim.ru/video/3003613", - "info_dict": { - "id": "3003613", - "ext": "mp4", - "title": "Погода. на 2 августа 2025 года", - "thumbnail": "https://cdn-st2.smotrim.ru/vh/pictures/xw/635/545/7.jpg", + 'url': 'https://smotrim.ru/video/3003613', + 'info_dict': { + 'id': '3003613', + 'ext': 'mp4', + 'title': 'Погода. на 2 августа 2025 года', + 'thumbnail': 'https://cdn-st2.smotrim.ru/vh/pictures/xw/635/545/7.jpg', }, - "add_ie": ["RUTV"], + 'add_ie': ['RUTV'], }, { - "url": "https://smotrim.ru/article/4609632", - "info_dict": { - "id": "3000761", - "ext": "mp4", - "title": "Новости культуры. Ольга Любимова провела рабочую встречу в Еврейской автономной области", - "thumbnail": "https://cdn-st2.smotrim.ru/vh/pictures/xw/638/386/6.jpg", + 'url': 'https://smotrim.ru/article/4609632', + 'info_dict': { + 'id': '3000761', + 'ext': 'mp4', + 'title': 'Новости культуры. Ольга Любимова провела рабочую встречу в Еврейской автономной области', + 'thumbnail': 'https://cdn-st2.smotrim.ru/vh/pictures/xw/638/386/6.jpg', }, - "add_ie": ["RUTV"], + 'add_ie': ['RUTV'], }, { - "url": "https://smotrim.ru/brand/64356", - "info_dict": { - "id": "2885093", - "ext": "mp4", - "title": "Большие и маленькие. 6-й сезон 8-й выпуск", - "thumbnail": "https://cdn-st2.smotrim.ru/vh/pictures/xw/527/187/3.jpg", + 'url': 'https://smotrim.ru/brand/64356', + 'info_dict': { + 'id': '2885093', + 'ext': 'mp4', + 'title': 'Большие и маленькие. 6-й сезон 8-й выпуск', + 'thumbnail': 'https://cdn-st2.smotrim.ru/vh/pictures/xw/527/187/3.jpg', }, - "add_ie": ["RUTV"], + 'add_ie': ['RUTV'], }, { # GEO RESTRICTED - "url": "https://smotrim.ru/live/19201", - "info_dict": { - "id": "381308c7-a066-4c4f-9656-83e2e792a7b4", - "ext": "mp4", - "title": "Россия К", - "thumbnail": "https://cdn-st2.smotrim.ru/vh/pictures/xw/441/085/7.png", + 'url': 'https://smotrim.ru/live/19201', + 'info_dict': { + 'id': '381308c7-a066-4c4f-9656-83e2e792a7b4', + 'ext': 'mp4', + 'title': 'Россия К', + 'thumbnail': 'https://cdn-st2.smotrim.ru/vh/pictures/xw/441/085/7.png', }, - "add_ie": ["RUTV"], + 'add_ie': ['RUTV'], }, { # GEO RESTRICTED, REDIRECT FROM live, CANONICAL FOR live urls - "url": "https://smotrim.ru/channel/4", - "info_dict": { - "id": "4", - "ext": "mp4", - "title": "Россия К", - "thumbnail": "https://cdn-st2.smotrim.ru/vh/pictures/xw/441/085/7.png", + 'url': 'https://smotrim.ru/channel/4', + 'info_dict': { + 'id': '4', + 'ext': 'mp4', + 'title': 'Россия К', + 'thumbnail': 'https://cdn-st2.smotrim.ru/vh/pictures/xw/441/085/7.png', }, - "add_ie": ["RUTV"], + 'add_ie': ['RUTV'], }, ] def _real_extract(self, url): - video_id, type = self._match_valid_url(url).group("id", "type") - webpage = self._download_webpage(url, video_id, f"Resolving {type} link") + video_id, type = self._match_valid_url(url).group('id', 'type') + webpage = self._download_webpage(url, video_id, f'Resolving {type} link') iframe_url = self._search_regex( r']+\bsrc=["\'](https?://player\.smotrim\.ru/iframe/[^"\']+)', webpage, - "iframe URL", + 'iframe URL', ) - if type in {"live", "channel"}: - # iframe_url = "https://player.smotrim.ru/iframe/live/uid/381308c7-a066-4c4f-9656-83e2e792a7b4/showZoomBtn/false/isPlay/true/mute/true/sid/smotrim_rk/" + if type in {'live', 'channel'}: + # iframe_url = 'https://player.smotrim.ru/iframe/live/uid/381308c7-a066-4c4f-9656-83e2e792a7b4/showZoomBtn/false/isPlay/true/mute/true/sid/smotrim_rk/' video_id = re.search( - r"(?P[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})", + r'(?P[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})', iframe_url, ) if not video_id: raise ExtractorError( - "There are no player uuid in this page.", expected=True + 'There are no player uuid in this page.', expected=True ) - video_id = video_id.group("video_id") + video_id = video_id.group('video_id') jsondata_url = ( - f"https://player.smotrim.ru/iframe/datalive/uid/{video_id}/sid/smotrim" + f'https://player.smotrim.ru/iframe/datalive/uid/{video_id}/sid/smotrim' ) else: - # iframe_url = "https://player.smotrim.ru/iframe/video/id/3000761/sid/smotrim/isPlay/true/mute/true/?acc_video_id=3204061" + # iframe_url = 'https://player.smotrim.ru/iframe/video/id/3000761/sid/smotrim/isPlay/true/mute/true/?acc_video_id=3204061' video_id = re.search( - r"^https?://player\.smotrim\.ru/iframe/video/id/(?P\d+)/sid/", + r'^https?://player\.smotrim\.ru/iframe/video/id/(?P\d+)/sid/', iframe_url, ) if not video_id: raise ExtractorError( - "There are no player id in this page.", expected=True + 'There are no player id in this page.', expected=True ) - video_id = video_id.group("video_id") + video_id = video_id.group('video_id') jsondata_url = ( - f"https://player.smotrim.ru/iframe/datavideo/id/{video_id}/sid/smotrim" + f'https://player.smotrim.ru/iframe/datavideo/id/{video_id}/sid/smotrim' ) try: json_info = self._download_json( - jsondata_url, video_id, "Downloading player config JSON metadata" + jsondata_url, video_id, 'Downloading player config JSON metadata' ) except Exception as e: raise ExtractorError(str(e), expected=True) - m3u8_url = json_info["data"]["playlist"]["medialist"][0]["sources"]["m3u8"][ - "auto" + m3u8_url = json_info['data']['playlist']['medialist'][0]['sources']['m3u8'][ + 'auto' ] formats, subtitles = self._extract_m3u8_formats_and_subtitles( - m3u8_url, video_id, "mp4", m3u8_id="hls" + m3u8_url, video_id, 'mp4', m3u8_id='hls' ) return { - "id": video_id, - "title": json_info["data"]["playlist"]["medialist"][0]["title"], - "thumbnail": json_info["data"]["playlist"]["medialist"][0]["pictures"][ - "16:9" + 'id': video_id, + 'title': json_info['data']['playlist']['medialist'][0]['title'], + 'thumbnail': json_info['data']['playlist']['medialist'][0]['pictures'][ + '16:9' ], - "formats": formats, - "subtitles": subtitles, + 'formats': formats, + 'subtitles': subtitles, } +