aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbashonly <88596187+bashonly@users.noreply.github.com>2024-09-27 11:38:08 -0500
committerGitHub <noreply@github.com>2024-09-27 16:38:08 +0000
commit48d629d461e05b1b19f5e53dc959bb9ebe95da42 (patch)
treec4e679ef6c53342fcf451672a938fe70d10293e6
parent7f909046f4dc0fba472b4963145aef6e0d42491b (diff)
[ie/YleAreena] Support podcasts (#11104)
Closes #10840 Authored by: bashonly
-rw-r--r--yt_dlp/extractor/yle_areena.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/yt_dlp/extractor/yle_areena.py b/yt_dlp/extractor/yle_areena.py
index ef9e96804..c0a218e2f 100644
--- a/yt_dlp/extractor/yle_areena.py
+++ b/yt_dlp/extractor/yle_areena.py
@@ -10,7 +10,7 @@ from ..utils import (
class YleAreenaIE(InfoExtractor):
- _VALID_URL = r'https?://areena\.yle\.fi/(?P<id>[\d-]+)'
+ _VALID_URL = r'https?://areena\.yle\.fi/(?P<podcast>podcastit/)?(?P<id>[\d-]+)'
_GEO_COUNTRIES = ['FI']
_TESTS = [
{
@@ -77,7 +77,7 @@ class YleAreenaIE(InfoExtractor):
]
def _real_extract(self, url):
- video_id = self._match_id(url)
+ video_id, is_podcast = self._match_valid_url(url).group('id', 'podcast')
info = self._search_json_ld(self._download_webpage(url, video_id), video_id, default={})
video_data = self._download_json(
f'https://player.api.yle.fi/v1/preview/{video_id}.json?app_id=player_static_prod&app_key=8930d72170e48303cf5f3867780d549b',
@@ -103,8 +103,11 @@ class YleAreenaIE(InfoExtractor):
'name': sub.get('kind'),
})
- kaltura_id = traverse_obj(video_data, ('data', 'ongoing_ondemand', 'kaltura', 'id'), expected_type=str)
- if kaltura_id:
+ if is_podcast:
+ info_dict = {
+ 'url': video_data['data']['ongoing_ondemand']['media_url'],
+ }
+ elif kaltura_id := traverse_obj(video_data, ('data', 'ongoing_ondemand', 'kaltura', 'id', {str})):
info_dict = {
'_type': 'url_transparent',
'url': smuggle_url(f'kaltura:1955031:{kaltura_id}', {'source_url': url}),
@@ -114,13 +117,11 @@ class YleAreenaIE(InfoExtractor):
formats, subs = self._extract_m3u8_formats_and_subtitles(
video_data['data']['ongoing_ondemand']['manifest_url'], video_id, 'mp4', m3u8_id='hls')
self._merge_subtitles(subs, target=subtitles)
- info_dict = {
- 'id': video_id,
- 'formats': formats,
- }
+ info_dict = {'formats': formats}
return {
**info_dict,
+ 'id': video_id,
'title': (traverse_obj(video_data, ('data', 'ongoing_ondemand', 'title', 'fin'), expected_type=str)
or episode or info.get('title')),
'description': description,