1
0
mirror of https://github.com/yt-dlp/yt-dlp.git synced 2025-06-27 08:58:30 +00:00

Add extractor for viacomcbs and integration for SouthParkDe

This commit is contained in:
Menken Philipp 2025-06-10 21:32:51 +02:00
parent ba090caeaa
commit 5579d7902d
3 changed files with 31 additions and 1 deletions

View File

@ -2325,6 +2325,7 @@
BTVestlendingenIE, BTVestlendingenIE,
) )
from .vh1 import VH1IE from .vh1 import VH1IE
from .viacomcbs import ViacomcbsIE
from .vice import ( from .vice import (
ViceArticleIE, ViceArticleIE,
ViceIE, ViceIE,

View File

@ -1,4 +1,5 @@
from .mtv import MTVServicesInfoExtractor from .mtv import MTVServicesInfoExtractor
from .viacomcbs import ViacomcbsIE
class SouthParkIE(MTVServicesInfoExtractor): class SouthParkIE(MTVServicesInfoExtractor):
@ -50,7 +51,7 @@ class SouthParkEsIE(SouthParkIE): # XXX: Do not subclass from concrete IE
}] }]
class SouthParkDeIE(SouthParkIE): # XXX: Do not subclass from concrete IE class SouthParkDeIE(ViacomcbsIE):
IE_NAME = 'southpark.de' IE_NAME = 'southpark.de'
_VALID_URL = r'https?://(?:www\.)?(?P<url>southpark\.de/(?:(en/(videoclip|collections|episodes|video-clips))|(videoclip|collections|folgen))/(?P<id>(?P<unique_id>.+?)/.+?)(?:\?|#|$))' _VALID_URL = r'https?://(?:www\.)?(?P<url>southpark\.de/(?:(en/(videoclip|collections|episodes|video-clips))|(videoclip|collections|folgen))/(?P<id>(?P<unique_id>.+?)/.+?)(?:\?|#|$))'
_TESTS = [{ _TESTS = [{

View File

@ -0,0 +1,28 @@
from yt_dlp.utils.traversal import traverse_obj
from .common import InfoExtractor
class ViacomcbsIE(InfoExtractor):
def _real_extract(self, url):
video_id = self._match_id(url)
webpage = self._download_webpage(url, video_id)
mgid = self._html_search_regex(r'\"videoServiceUrl\":.*(mgid[\w:\.\-]+).*mica.*json', webpage, 'mgid')
title = self._html_search_regex(r'\"shortTitle\":\"([\w\s]+)\"', webpage, 'title')
formats, subtitles = self._extract_m3u8_formats_and_subtitles(self._get_video_url(mgid, video_id), video_id)
return {
'id': video_id,
'title': title,
'description': self._og_search_description(webpage),
'formats': formats,
'subtitles': subtitles,
}
def _get_video_url(self, mgid, video_id):
config = self._download_json(
f'https://topaz.viacomcbs.digital/topaz/api/{mgid}/mica.json?clientPlatform=desktop', video_id)
return traverse_obj(config, ('stitchedstream', 'source'))