mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[ard] Add support for Beta ARD Mediathek
Thanks to https://blog.fefe.de/?ts=a577685d for pointing out support is missing.
This commit is contained in:
		| @@ -282,3 +282,65 @@ class ARDIE(InfoExtractor): | ||||
|             'upload_date': upload_date, | ||||
|             'thumbnail': thumbnail, | ||||
|         } | ||||
|  | ||||
|  | ||||
| class ARDBetaMediathekIE(InfoExtractor): | ||||
|     _VALID_URL = r'https://beta\.ardmediathek\.de/[a-z]+/player/(?P<video_id>[a-zA-Z0-9]+)/(?P<display_id>[^/?#]+)' | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://beta.ardmediathek.de/ard/player/Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhdG9ydC9mYmM4NGM1NC0xNzU4LTRmZGYtYWFhZS0wYzcyZTIxNGEyMDE/die-robuste-roswita', | ||||
|         'md5': '2d02d996156ea3c397cfc5036b5d7f8f', | ||||
|         'info_dict': { | ||||
|             'display_id': 'die-robuste-roswita', | ||||
|             'id': 'Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhdG9ydC9mYmM4NGM1NC0xNzU4LTRmZGYtYWFhZS0wYzcyZTIxNGEyMDE', | ||||
|             'title': 'Tatort: Die robuste Roswita', | ||||
|             'description': r're:^Der Mord.*trüber ist als die Ilm.', | ||||
|             'duration': 5316, | ||||
|             'thumbnail': 'https://img.ardmediathek.de/standard/00/55/43/59/34/-1774185891/16x9/960?mandant=ard', | ||||
|             'upload_date': '20180826', | ||||
|             'ext': 'mp4', | ||||
|         }, | ||||
|     }] | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         video_id = mobj.group('video_id') | ||||
|         display_id = mobj.group('display_id') | ||||
|  | ||||
|         webpage = self._download_webpage(url, display_id) | ||||
|         data_json = self._search_regex(r'window\.__APOLLO_STATE__\s*=\s*(\{.*);', webpage, 'json') | ||||
|         data = self._parse_json(data_json, display_id) | ||||
|  | ||||
|         res = { | ||||
|             'id': video_id, | ||||
|             'display_id': display_id, | ||||
|         } | ||||
|         formats = [] | ||||
|         for widget in data.values(): | ||||
|             if widget.get('_geoblocked'): | ||||
|                 raise ExtractorError('This video is not available due to geoblocking', expected=True) | ||||
|  | ||||
|             if '_duration' in widget: | ||||
|                 res['duration'] = widget['_duration'] | ||||
|             if 'clipTitle' in widget: | ||||
|                 res['title'] = widget['clipTitle'] | ||||
|             if '_previewImage' in widget: | ||||
|                 res['thumbnail'] = widget['_previewImage'] | ||||
|             if 'broadcastedOn' in widget: | ||||
|                 res['upload_date'] = unified_strdate(widget['broadcastedOn']) | ||||
|             if 'synopsis' in widget: | ||||
|                 res['description'] = widget['synopsis'] | ||||
|             if '_subtitleUrl' in widget: | ||||
|                 res['subtitles'] = {'de': [{ | ||||
|                     'ext': 'ttml', | ||||
|                     'url': widget['_subtitleUrl'], | ||||
|                 }]} | ||||
|             if '_quality' in widget: | ||||
|                 formats.append({ | ||||
|                     'format_id': widget['_quality'], | ||||
|                     'url': widget['_stream']['json'][0], | ||||
|                 }) | ||||
|  | ||||
|         self._sort_formats(formats) | ||||
|         res['formats'] = formats | ||||
|  | ||||
|         return res | ||||
|   | ||||
| @@ -54,6 +54,7 @@ from .appletrailers import ( | ||||
| from .archiveorg import ArchiveOrgIE | ||||
| from .arkena import ArkenaIE | ||||
| from .ard import ( | ||||
|     ARDBetaMediathekIE, | ||||
|     ARDIE, | ||||
|     ARDMediathekIE, | ||||
| ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister