Compare commits

...

2 Commits

Author SHA1 Message Date
sepro
547e220eff Add tv2kosmopol test 2025-04-29 00:13:05 +02:00
bashonly
88523e6795
refactor
Authored by: bashonly
2025-04-28 16:49:02 -05:00

View File

@ -4,7 +4,6 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from .jwplatform import JWPlatformIE from .jwplatform import JWPlatformIE
from ..utils import ( from ..utils import (
ExtractorError,
determine_ext, determine_ext,
js_to_json, js_to_json,
url_or_none, url_or_none,
@ -84,28 +83,22 @@ class TV2DKIE(InfoExtractor):
}, { }, {
'url': 'https://www.tv2nord.dk/artikel/dybt-uacceptabelt', 'url': 'https://www.tv2nord.dk/artikel/dybt-uacceptabelt',
'only_matching': True, 'only_matching': True,
}, {
'url': 'https://www.tv2kosmopol.dk/metropolen/chaufforer-beordres-til-at-kore-videre-i-ulovlige-busser-med-rode-advarselslamper',
'only_matching': True,
}] }]
def _real_extract(self, url): def _real_extract(self, url):
video_id = self._match_id(url) video_id = self._match_id(url)
webpage = self._download_webpage(url, video_id) webpage = self._download_webpage(url, video_id)
search_space = traverse_obj(webpage, {find_element(tag='article')}) or webpage search_space = traverse_obj(webpage, {find_element(tag='article')}) or webpage
players = re.findall(r'x-data="(?:video_player|simple_player)\(({[^"]+})', search_space)
entries = [] player_ids = traverse_obj(
for player in players: re.findall(r'x-data="(?:video_player|simple_player)\(({[^"]+})', search_space),
player_data = self._parse_json( (..., {js_to_json}, {json.loads}, ('jwpMediaId', 'videoId'), {str}))
player, video_id, transform_source=js_to_json, fatal=False)
jwplayer_id = traverse_obj(player_data, (('jwpMediaId', 'videoId'), {str}, any))
if jwplayer_id:
entries.append(self.url_result(f'jwplatform:{jwplayer_id}', JWPlatformIE, jwplayer_id))
if len(entries) == 1: return self.playlist_from_matches(
return entries[0] player_ids, video_id, getter=lambda x: f'jwplatform:{x}', ie=JWPlatformIE)
elif len(entries) > 1:
return self.playlist_result(entries, video_id)
raise ExtractorError(f'No video found for {video_id}', expected=True)
class TV2DKBornholmPlayIE(InfoExtractor): class TV2DKBornholmPlayIE(InfoExtractor):