From 237eca80883c0f4823be4519c1098d901a3000b2 Mon Sep 17 00:00:00 2001 From: doe1080 <98906116+doe1080@users.noreply.github.com> Date: Mon, 11 Aug 2025 13:44:14 +0900 Subject: [PATCH] remove pladform.py --- yt_dlp/extractor/_extractors.py | 1 - yt_dlp/extractor/odnoklassniki.py | 8 -- yt_dlp/extractor/pladform.py | 135 ------------------------------ yt_dlp/extractor/vk.py | 10 --- 4 files changed, 154 deletions(-) delete mode 100644 yt_dlp/extractor/pladform.py diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py index bb595f924b..add64612ec 100644 --- a/yt_dlp/extractor/_extractors.py +++ b/yt_dlp/extractor/_extractors.py @@ -1548,7 +1548,6 @@ PixivSketchIE, PixivSketchUserIE, ) -from .pladform import PladformIE from .planetmarathi import PlanetMarathiIE from .platzi import ( PlatziCourseIE, diff --git a/yt_dlp/extractor/odnoklassniki.py b/yt_dlp/extractor/odnoklassniki.py index 18eba42e60..c9bee9060e 100644 --- a/yt_dlp/extractor/odnoklassniki.py +++ b/yt_dlp/extractor/odnoklassniki.py @@ -352,14 +352,6 @@ def _extract_desktop(self, url): 'subtitles': subtitles, } - # pladform - if provider == 'OPEN_GRAPH': - info.update({ - '_type': 'url_transparent', - 'url': movie['contentId'], - }) - return info - if provider == 'USER_YOUTUBE': info.update({ '_type': 'url_transparent', diff --git a/yt_dlp/extractor/pladform.py b/yt_dlp/extractor/pladform.py deleted file mode 100644 index f4355d0cf5..0000000000 --- a/yt_dlp/extractor/pladform.py +++ /dev/null @@ -1,135 +0,0 @@ -from .common import InfoExtractor -from ..utils import ( - ExtractorError, - determine_ext, - int_or_none, - parse_qs, - qualities, - xpath_text, -) - - -class PladformIE(InfoExtractor): - _VALID_URL = r'''(?x) - https?:// - (?: - (?: - out\.pladform\.ru/player| - static\.pladform\.ru/player\.swf - ) - \?.*\bvideoid=| - video\.pladform\.ru/catalog/video/videoid/ - ) - (?P\d+) - ''' - _EMBED_REGEX = [r']+src=(["\'])(?P(?:https?:)?//out\.pladform\.ru/player\?.+?)\1'] - _TESTS = [{ - 'url': 'http://out.pladform.ru/player?pl=18079&type=html5&videoid=100231282', - 'info_dict': { - 'id': '6216d548e755edae6e8280667d774791', - 'ext': 'mp4', - 'timestamp': 1406117012, - 'title': 'Гарик Мартиросян и Гарик Харламов - Кастинг на концерт ко Дню милиции', - 'age_limit': 0, - 'upload_date': '20140723', - 'thumbnail': str, - 'view_count': int, - 'description': str, - 'uploader_id': '12082', - 'uploader': 'Comedy Club', - 'duration': 367, - }, - 'expected_warnings': ['HTTP Error 404: Not Found'], - }, { - 'url': 'https://out.pladform.ru/player?pl=64471&videoid=3777899&vk_puid15=0&vk_puid34=0', - 'md5': '53362fac3a27352da20fa2803cc5cd6f', - 'info_dict': { - 'id': '3777899', - 'ext': 'mp4', - 'title': 'СТУДИЯ СОЮЗ • Шоу Студия Союз, 24 выпуск (01.02.2018) Нурлан Сабуров и Слава Комиссаренко', - 'description': 'md5:05140e8bf1b7e2d46e7ba140be57fd95', - 'thumbnail': r're:^https?://.*\.jpg$', - 'duration': 3190, - }, - }, { - 'url': 'http://static.pladform.ru/player.swf?pl=21469&videoid=100183293&vkcid=0', - 'only_matching': True, - }, { - 'url': 'http://video.pladform.ru/catalog/video/videoid/100183293/vkcid/0', - 'only_matching': True, - }] - - def _real_extract(self, url): - video_id = self._match_id(url) - - qs = parse_qs(url) - pl = qs.get('pl', ['1'])[0] - - video = self._download_xml( - 'http://out.pladform.ru/getVideo', video_id, query={ - 'pl': pl, - 'videoid': video_id, - }, fatal=False) - - def fail(text): - raise ExtractorError( - f'{self.IE_NAME} returned error: {text}', - expected=True) - - if not video: - target_url = self._request_webpage(url, video_id, note='Resolving final URL').url - if target_url == url: - raise ExtractorError('Can\'t parse page') - return self.url_result(target_url) - - if video.tag == 'error': - fail(video.text) - - quality = qualities(('ld', 'sd', 'hd')) - - formats = [] - for src in video.findall('./src'): - if src is None: - continue - format_url = src.text - if not format_url: - continue - if src.get('type') == 'hls' or determine_ext(format_url) == 'm3u8': - formats.extend(self._extract_m3u8_formats( - format_url, video_id, 'mp4', entry_protocol='m3u8_native', - m3u8_id='hls', fatal=False)) - else: - formats.append({ - 'url': src.text, - 'format_id': src.get('quality'), - 'quality': quality(src.get('quality')), - }) - - if not formats: - error = xpath_text(video, './cap', 'error', default=None) - if error: - fail(error) - - webpage = self._download_webpage( - f'http://video.pladform.ru/catalog/video/videoid/{video_id}', - video_id) - - title = self._og_search_title(webpage, fatal=False) or xpath_text( - video, './/title', 'title', fatal=True) - description = self._search_regex( - r'\s*

([^<]+)

', webpage, 'description', fatal=False) - thumbnail = self._og_search_thumbnail(webpage) or xpath_text( - video, './/cover', 'cover') - - duration = int_or_none(xpath_text(video, './/time', 'duration')) - age_limit = int_or_none(xpath_text(video, './/age18', 'age limit')) - - return { - 'id': video_id, - 'title': title, - 'description': description, - 'thumbnail': thumbnail, - 'duration': duration, - 'age_limit': age_limit, - 'formats': formats, - } diff --git a/yt_dlp/extractor/vk.py b/yt_dlp/extractor/vk.py index 8a106adb97..9adb3086a8 100644 --- a/yt_dlp/extractor/vk.py +++ b/yt_dlp/extractor/vk.py @@ -5,7 +5,6 @@ from .common import InfoExtractor from .dailymotion import DailymotionIE from .odnoklassniki import OdnoklassnikiIE -from .pladform import PladformIE from .sibnet import SibnetEmbedIE from .vimeo import VimeoIE from .youtube import YoutubeIE @@ -334,11 +333,6 @@ class VKIE(VKBaseIE): 'url': 'https://vk.com/video205387401_164765225', 'only_matching': True, }, - { - # pladform embed - 'url': 'https://vk.com/video-76116461_171554880', - 'only_matching': True, - }, { 'url': 'http://new.vk.com/video205387401_165548505', 'only_matching': True, @@ -456,10 +450,6 @@ def _real_extract(self, url): if vimeo_url is not None: return self.url_result(vimeo_url, VimeoIE.ie_key()) - pladform_url = PladformIE._extract_url(info_page) - if pladform_url: - return self.url_result(pladform_url, PladformIE.ie_key()) - m_rutube = re.search( r'\ssrc="((?:https?:)?//rutube\.ru\\?/(?:video|play)\\?/embed(?:.*?))\\?"', info_page) if m_rutube is not None: