mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-22 02:15:12 +00:00
[ie/Radio1Be] Add extractor (#9122)
Closes #8707 Authored by: HobbyistDev
This commit is contained in:
parent
02f93ff51b
commit
36baaa10e0
2 changed files with 63 additions and 0 deletions
|
@ -2290,6 +2290,7 @@
|
||||||
VrtNUIE,
|
VrtNUIE,
|
||||||
KetnetIE,
|
KetnetIE,
|
||||||
DagelijkseKostIE,
|
DagelijkseKostIE,
|
||||||
|
Radio1BeIE,
|
||||||
)
|
)
|
||||||
from .vtm import VTMIE
|
from .vtm import VTMIE
|
||||||
from .medialaan import MedialaanIE
|
from .medialaan import MedialaanIE
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
join_nonempty,
|
join_nonempty,
|
||||||
jwt_encode_hs256,
|
jwt_encode_hs256,
|
||||||
make_archive_id,
|
make_archive_id,
|
||||||
|
merge_dicts,
|
||||||
parse_age_limit,
|
parse_age_limit,
|
||||||
parse_iso8601,
|
parse_iso8601,
|
||||||
str_or_none,
|
str_or_none,
|
||||||
|
@ -425,3 +426,64 @@ def _real_extract(self, url):
|
||||||
['description', 'twitter:description', 'og:description'], webpage),
|
['description', 'twitter:description', 'og:description'], webpage),
|
||||||
'_old_archive_ids': [make_archive_id('Canvas', video_id)],
|
'_old_archive_ids': [make_archive_id('Canvas', video_id)],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Radio1BeIE(VRTBaseIE):
|
||||||
|
_VALID_URL = r'https?://radio1\.be/(?:lees|luister/select)/(?P<id>[\w/-]+)'
|
||||||
|
_TESTS = [{
|
||||||
|
'url': 'https://radio1.be/luister/select/de-ochtend/komt-n-va-volgend-jaar-op-in-wallonie',
|
||||||
|
'info_dict': {
|
||||||
|
'id': 'eb6c22e9-544f-44f4-af39-cf8cccd29e22',
|
||||||
|
'title': 'Komt N-VA volgend jaar op in Wallonië?',
|
||||||
|
'display_id': 'de-ochtend/komt-n-va-volgend-jaar-op-in-wallonie',
|
||||||
|
'description': 'md5:b374ea1c9302f38362df9dea1931468e',
|
||||||
|
'thumbnail': r're:https?://cds\.vrt\.radio/[^/#\?&]+'
|
||||||
|
},
|
||||||
|
'playlist_mincount': 1
|
||||||
|
}, {
|
||||||
|
'url': 'https://radio1.be/lees/europese-unie-wil-onmiddellijke-humanitaire-pauze-en-duurzaam-staakt-het-vuren-in-gaza?view=web',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '5d47f102-dbdb-4fa0-832b-26c1870311f2',
|
||||||
|
'title': 'Europese Unie wil "onmiddellijke humanitaire pauze" en "duurzaam staakt-het-vuren" in Gaza',
|
||||||
|
'description': 'md5:1aad1fae7d39edeffde5d3e67d276b64',
|
||||||
|
'thumbnail': r're:https?://cds\.vrt\.radio/[^/#\?&]+',
|
||||||
|
'display_id': 'europese-unie-wil-onmiddellijke-humanitaire-pauze-en-duurzaam-staakt-het-vuren-in-gaza'
|
||||||
|
},
|
||||||
|
'playlist_mincount': 1
|
||||||
|
}]
|
||||||
|
|
||||||
|
def _extract_video_entries(self, next_js_data, display_id):
|
||||||
|
video_data = traverse_obj(
|
||||||
|
next_js_data, ((None, ('paragraphs', ...)), {lambda x: x if x['mediaReference'] else None}))
|
||||||
|
for data in video_data:
|
||||||
|
media_reference = data['mediaReference']
|
||||||
|
formats, subtitles = self._extract_formats_and_subtitles(
|
||||||
|
self._call_api(media_reference), display_id)
|
||||||
|
|
||||||
|
yield {
|
||||||
|
'id': media_reference,
|
||||||
|
'formats': formats,
|
||||||
|
'subtitles': subtitles,
|
||||||
|
**traverse_obj(data, {
|
||||||
|
'title': ('title', {str}),
|
||||||
|
'description': ('body', {clean_html})
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
|
||||||
|
def _real_extract(self, url):
|
||||||
|
display_id = self._match_id(url)
|
||||||
|
webpage = self._download_webpage(url, display_id)
|
||||||
|
next_js_data = self._search_nextjs_data(webpage, display_id)['props']['pageProps']['item']
|
||||||
|
|
||||||
|
return self.playlist_result(
|
||||||
|
self._extract_video_entries(next_js_data, display_id), **merge_dicts(traverse_obj(
|
||||||
|
next_js_data, ({
|
||||||
|
'id': ('id', {str}),
|
||||||
|
'title': ('title', {str}),
|
||||||
|
'description': (('description', 'content'), {clean_html}),
|
||||||
|
}), get_all=False), {
|
||||||
|
'display_id': display_id,
|
||||||
|
'title': self._html_search_meta(['name', 'og:title', 'twitter:title'], webpage),
|
||||||
|
'description': self._html_search_meta(['description', 'og:description', 'twitter:description'], webpage),
|
||||||
|
'thumbnail': self._html_search_meta(['og:image', 'twitter:image'], webpage),
|
||||||
|
}))
|
||||||
|
|
Loading…
Reference in a new issue