From a7d259a6951dfd398619b42618921626eea06df0 Mon Sep 17 00:00:00 2001 From: Alex Karabanov Date: Thu, 25 Sep 2025 13:59:56 +0400 Subject: [PATCH] [ie/sponsr] Add extractor --- yt_dlp/extractor/_extractors.py | 5 +++ yt_dlp/extractor/sponsr.py | 64 +++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 yt_dlp/extractor/sponsr.py diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py index e6b34e9e64..68d0d12606 100644 --- a/yt_dlp/extractor/_extractors.py +++ b/yt_dlp/extractor/_extractors.py @@ -1916,6 +1916,11 @@ from .spankbang import ( SpankBangPlaylistIE, ) from .spiegel import SpiegelIE +from .spike import ( + BellatorIE, + ParamountNetworkIE, +) +from .sponsr import SponsrIE from .sport5 import Sport5IE from .sportbox import SportBoxIE from .sportdeutschland import SportDeutschlandIE diff --git a/yt_dlp/extractor/sponsr.py b/yt_dlp/extractor/sponsr.py new file mode 100644 index 0000000000..3f549c7c59 --- /dev/null +++ b/yt_dlp/extractor/sponsr.py @@ -0,0 +1,64 @@ + +from .kinescope import KinescopeBaseIE +from ..utils import ( + traverse_obj, +) + + +class SponsrIE(KinescopeBaseIE): + + _VALID_URL = r'https?://(?:www\.)?sponsr\.ru/(?:[^/]+)/(?P[0-9]+)' + _TESTS = [{ + 'url': 'https://sponsr.ru/vpered/114539/Rossiya_stroit_zavod_poluprovodnikov_vkosmose_Eksperiment_nachalsya', + 'md5': 'f94e07364c18df48b65903255123cc06', + 'info_dict': { + 'id': '114539', + 'ext': 'mp4', + 'title': 'Россия строит завод полупроводников в космосе. Эксперимент начался!', + 'description': 'Россия строит завод полупроводников в космосе. Эксперимент начался!. О позитивных достижениях России в сфере экономики, науки и о подвигах наших соотечественников', + }, + }, { + 'url': 'https://sponsr.ru/vpered/113655/Rossiya_zanedelu_megaturbina_novyi_reaktor_sputniki_bespilotnik_idrugie_chudesa_tehniki', + 'md5': '763cad7f406cf35c5169ec95fcbd637f', + 'info_dict': { + 'id': '113655', + 'ext': 'mp4', + 'title': 'Россия за неделю: мегатурбина, новый реактор, спутники, беспилотник и другие чудеса техники', + 'description': 'Россия за неделю: мегатурбина, новый реактор, спутники, беспилотник и другие чудеса техники. О позитивных достижениях России в сфере экономики, науки и о подвигах наших соотечественников', + }, + }, { + 'url': 'https://sponsr.ru/savvateev/114618/ZADACHKI_IZ_BROSHURY_KOLMOGOROVA__PRODOLJENIE/', + 'md5': 'b70e84d53fbbd1144230e30207b57e7d', + 'info_dict': { + 'id': '114618', + 'ext': 'mp4', + 'title': 'ЗАДАЧКИ ИЗ БРОШЮРЫ КОЛМОГОРОВА - ПРОДОЛЖЕНИЕ!', + 'description': 'ЗАДАЧКИ ИЗ БРОШЮРЫ КОЛМОГОРОВА - ПРОДОЛЖЕНИЕ!. Алексей Савватеев — популяризатор математики и пламенный борец за улучшение школьного образования. Лекции, выступления, новости', + + }, + }, + + + ] + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + media_id = self._search_regex( + r']+?src=(["\'])(?:https?:)?//(?:www\.)?kinescope\.io/[^"]+"\s*data-url=(["\'])/post/video/\?video_id=(?P[^\?]+)[^>]+>', webpage, 'media_id', group='media_id') + + token = traverse_obj(self._search_nextjs_data(webpage, video_id), ('props', 'pageProps', 'project', 'project_kinescope_token')) + + video_info = self._get_video_info(media_id, token, fatal=True, note='Get video info') + + formats = self._get_formats(video_info, fatal=True, note='Get formats') + + return { + 'id': video_id, + 'title': self._og_search_title(webpage).split('|', 1)[0].strip(), + 'description': self._og_search_description(webpage), + 'formats': formats, + # 'uploader': self._search_regex(r']+id="uploader"[^>]*>([^<]+)<', webpage, 'uploader', fatal=False), + # TODO: more properties (see yt_dlp/extractor/common.py) + }