diff options
author | Alexander Seiler <seileralex@gmail.com> | 2025-02-23 10:14:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-23 09:14:35 +0000 |
commit | 26a502fc727d0e91b2db6bf4a112823bcc672e85 (patch) | |
tree | 64a23f0e6508311927d726930ebe7bd9e1c382f3 | |
parent | 652827d5a076c9483c36654ad2cf3fe46219baf4 (diff) |
[ie/azmedien] Fix extractor (#12375)
Authored by: goggle
-rw-r--r-- | yt_dlp/extractor/azmedien.py | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/yt_dlp/extractor/azmedien.py b/yt_dlp/extractor/azmedien.py index 0e3a03f03..9f6bd820c 100644 --- a/yt_dlp/extractor/azmedien.py +++ b/yt_dlp/extractor/azmedien.py @@ -1,7 +1,6 @@ -import json - from .common import InfoExtractor from .kaltura import KalturaIE +from ..utils.traversal import require, traverse_obj class AZMedienIE(InfoExtractor): @@ -9,15 +8,15 @@ class AZMedienIE(InfoExtractor): _VALID_URL = r'''(?x) https?:// (?:www\.|tv\.)? - (?P<host> + (?: telezueri\.ch| telebaern\.tv| telem1\.ch| tvo-online\.ch )/ - [^/]+/ + [^/?#]+/ (?P<id> - [^/]+-(?P<article_id>\d+) + [^/?#]+-\d+ ) (?: \#video= @@ -47,19 +46,17 @@ class AZMedienIE(InfoExtractor): 'url': 'https://www.telebaern.tv/telebaern-news/montag-1-oktober-2018-ganze-sendung-133531189#video=0_7xjo9lf1', 'only_matching': True, }] - _API_TEMPL = 'https://www.%s/api/pub/gql/%s/NewsArticleTeaser/a4016f65fe62b81dc6664dd9f4910e4ab40383be' _PARTNER_ID = '1719221' def _real_extract(self, url): - host, display_id, article_id, entry_id = self._match_valid_url(url).groups() + display_id, entry_id = self._match_valid_url(url).groups() if not entry_id: - entry_id = self._download_json( - self._API_TEMPL % (host, host.split('.')[0]), display_id, query={ - 'variables': json.dumps({ - 'contextId': 'NewsArticle:' + article_id, - }), - })['data']['context']['mainAsset']['video']['kaltura']['kalturaId'] + webpage = self._download_webpage(url, display_id) + data = self._search_json( + r'window\.__APOLLO_STATE__\s*=', webpage, 'video data', display_id) + entry_id = traverse_obj(data, ( + lambda _, v: v['__typename'] == 'KalturaData', 'kalturaId', any, {require('kaltura id')})) return self.url_result( f'kaltura:{self._PARTNER_ID}:{entry_id}', |