mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	| @@ -22,13 +22,13 @@ class RadioCanadaIE(InfoExtractor): | ||||
|         'url': 'http://ici.radio-canada.ca/widgets/mediaconsole/medianet/7184272', | ||||
|         'info_dict': { | ||||
|             'id': '7184272', | ||||
|             'ext': 'flv', | ||||
|             'ext': 'mp4', | ||||
|             'title': 'Le parcours du tireur capté sur vidéo', | ||||
|             'description': 'Images des caméras de surveillance fournies par la GRC montrant le parcours du tireur d\'Ottawa', | ||||
|             'upload_date': '20141023', | ||||
|         }, | ||||
|         'params': { | ||||
|             # rtmp download | ||||
|             # m3u8 download | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|     } | ||||
| @@ -36,11 +36,14 @@ class RadioCanadaIE(InfoExtractor): | ||||
|     def _real_extract(self, url): | ||||
|         app_code, video_id = re.match(self._VALID_URL, url).groups() | ||||
|  | ||||
|         device_types = ['ipad'] | ||||
|         if app_code != 'toutv': | ||||
|             device_types.append('flash') | ||||
|  | ||||
|         formats = [] | ||||
|         # TODO: extract m3u8 and f4m formats | ||||
|         # m3u8 formats can be extracted using ipad device_type return 403 error code when ffmpeg try to download segements | ||||
|         # TODO: extract f4m formats | ||||
|         # f4m formats can be extracted using flashhd device_type but they produce unplayable file | ||||
|         for device_type in ('flash',): | ||||
|         for device_type in device_types: | ||||
|             v_data = self._download_xml( | ||||
|                 'http://api.radio-canada.ca/validationMedia/v1/Validation.ashx', | ||||
|                 video_id, note='Downloading %s XML' % device_type, query={ | ||||
| @@ -115,13 +118,13 @@ class RadioCanadaAudioVideoIE(InfoExtractor): | ||||
|         'url': 'http://ici.radio-canada.ca/audio-video/media-7527184/barack-obama-au-vietnam', | ||||
|         'info_dict': { | ||||
|             'id': '7527184', | ||||
|             'ext': 'flv', | ||||
|             'ext': 'mp4', | ||||
|             'title': 'Barack Obama au Vietnam', | ||||
|             'description': 'Les États-Unis lèvent l\'embargo sur la vente d\'armes qui datait de la guerre du Vietnam', | ||||
|             'upload_date': '20160523', | ||||
|         }, | ||||
|         'params': { | ||||
|             # rtmp download | ||||
|             # m3u8 download | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|     } | ||||
|   | ||||
| @@ -1,74 +1,41 @@ | ||||
| # coding: utf-8 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import re | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..utils import ( | ||||
|     ExtractorError, | ||||
|     unified_strdate, | ||||
| ) | ||||
| from ..utils import int_or_none | ||||
|  | ||||
|  | ||||
| class TouTvIE(InfoExtractor): | ||||
|     IE_NAME = 'tou.tv' | ||||
|     _VALID_URL = r'https?://www\.tou\.tv/(?P<id>[a-zA-Z0-9_-]+(?:/(?P<episode>S[0-9]+E[0-9]+)))' | ||||
|     _VALID_URL = r'https?://ici\.tou\.tv/(?P<id>[a-zA-Z0-9_-]+/S[0-9]+E[0-9]+)' | ||||
|  | ||||
|     _TEST = { | ||||
|         'url': 'http://www.tou.tv/30-vies/S04E41', | ||||
|         'url': 'http://ici.tou.tv/garfield-tout-court/S2015E17', | ||||
|         'info_dict': { | ||||
|             'id': '30-vies_S04E41', | ||||
|             'id': '122017', | ||||
|             'ext': 'mp4', | ||||
|             'title': '30 vies Saison 4 / Épisode 41', | ||||
|             'description': 'md5:da363002db82ccbe4dafeb9cab039b09', | ||||
|             'age_limit': 8, | ||||
|             'uploader': 'Groupe des Nouveaux Médias', | ||||
|             'duration': 1296, | ||||
|             'upload_date': '20131118', | ||||
|             'thumbnail': 'http://static.tou.tv/medias/images/2013-11-18_19_00_00_30VIES_0341_01_L.jpeg', | ||||
|             'title': 'Saison 2015 Épisode 17', | ||||
|             'description': 'La photo de famille 2', | ||||
|             'upload_date': '20100717', | ||||
|         }, | ||||
|         'params': { | ||||
|             'skip_download': True,  # Requires rtmpdump | ||||
|             # m3u8 download | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|         'skip': 'Only available in Canada' | ||||
|     } | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         video_id = mobj.group('id') | ||||
|         webpage = self._download_webpage(url, video_id) | ||||
|  | ||||
|         mediaId = self._search_regex( | ||||
|             r'"idMedia":\s*"([^"]+)"', webpage, 'media ID') | ||||
|  | ||||
|         streams_url = 'http://release.theplatform.com/content.select?pid=' + mediaId | ||||
|         streams_doc = self._download_xml( | ||||
|             streams_url, video_id, note='Downloading stream list') | ||||
|  | ||||
|         video_url = next(n.text | ||||
|                          for n in streams_doc.findall('.//choice/url') | ||||
|                          if '//ad.doubleclick' not in n.text) | ||||
|         if video_url.endswith('/Unavailable.flv'): | ||||
|             raise ExtractorError( | ||||
|                 'Access to this video is blocked from outside of Canada', | ||||
|                 expected=True) | ||||
|  | ||||
|         duration_str = self._html_search_meta( | ||||
|             'video:duration', webpage, 'duration') | ||||
|         duration = int(duration_str) if duration_str else None | ||||
|         upload_date_str = self._html_search_meta( | ||||
|             'video:release_date', webpage, 'upload date') | ||||
|         upload_date = unified_strdate(upload_date_str) if upload_date_str else None | ||||
|         path = self._match_id(url) | ||||
|         metadata = self._download_json('http://ici.tou.tv/presentation/%s' % path, path) | ||||
|         video_id = metadata['IdMedia'] | ||||
|         details = metadata['Details'] | ||||
|         title = details['OriginalTitle'] | ||||
|  | ||||
|         return { | ||||
|             '_type': 'url_transparent', | ||||
|             'url': 'radiocanada:%s:%s' % (metadata.get('AppCode', 'toutv'), video_id), | ||||
|             'id': video_id, | ||||
|             'title': self._og_search_title(webpage), | ||||
|             'url': video_url, | ||||
|             'description': self._og_search_description(webpage), | ||||
|             'uploader': self._dc_search_uploader(webpage), | ||||
|             'thumbnail': self._og_search_thumbnail(webpage), | ||||
|             'age_limit': self._media_rating_search(webpage), | ||||
|             'duration': duration, | ||||
|             'upload_date': upload_date, | ||||
|             'ext': 'mp4', | ||||
|             'title': title, | ||||
|             'thumbnail': details.get('ImageUrl'), | ||||
|             'duration': int_or_none(details.get('LengthInSeconds')), | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 remitamine
					remitamine