mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[ie/Radio1Be] Add extractor (#9122)
Closes #8707 Authored by: HobbyistDev
This commit is contained in:
		| @@ -2290,6 +2290,7 @@ from .vrt import ( | |||||||
|     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 @@ from ..utils import ( | |||||||
|     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 @@ class DagelijkseKostIE(VRTBaseIE): | |||||||
|                 ['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), | ||||||
|  |             })) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 HobbyistDev
					HobbyistDev