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', |         'url': 'http://ici.radio-canada.ca/widgets/mediaconsole/medianet/7184272', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': '7184272', |             'id': '7184272', | ||||||
|             'ext': 'flv', |             'ext': 'mp4', | ||||||
|             'title': 'Le parcours du tireur capté sur vidéo', |             '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', |             'description': 'Images des caméras de surveillance fournies par la GRC montrant le parcours du tireur d\'Ottawa', | ||||||
|             'upload_date': '20141023', |             'upload_date': '20141023', | ||||||
|         }, |         }, | ||||||
|         'params': { |         'params': { | ||||||
|             # rtmp download |             # m3u8 download | ||||||
|             'skip_download': True, |             'skip_download': True, | ||||||
|         }, |         }, | ||||||
|     } |     } | ||||||
| @@ -36,11 +36,14 @@ class RadioCanadaIE(InfoExtractor): | |||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         app_code, video_id = re.match(self._VALID_URL, url).groups() |         app_code, video_id = re.match(self._VALID_URL, url).groups() | ||||||
|  |  | ||||||
|  |         device_types = ['ipad'] | ||||||
|  |         if app_code != 'toutv': | ||||||
|  |             device_types.append('flash') | ||||||
|  |  | ||||||
|         formats = [] |         formats = [] | ||||||
|         # TODO: extract m3u8 and f4m formats |         # TODO: extract f4m formats | ||||||
|         # m3u8 formats can be extracted using ipad device_type return 403 error code when ffmpeg try to download segements |  | ||||||
|         # f4m formats can be extracted using flashhd device_type but they produce unplayable file |         # 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( |             v_data = self._download_xml( | ||||||
|                 'http://api.radio-canada.ca/validationMedia/v1/Validation.ashx', |                 'http://api.radio-canada.ca/validationMedia/v1/Validation.ashx', | ||||||
|                 video_id, note='Downloading %s XML' % device_type, query={ |                 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', |         'url': 'http://ici.radio-canada.ca/audio-video/media-7527184/barack-obama-au-vietnam', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': '7527184', |             'id': '7527184', | ||||||
|             'ext': 'flv', |             'ext': 'mp4', | ||||||
|             'title': 'Barack Obama au Vietnam', |             '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', |             'description': 'Les États-Unis lèvent l\'embargo sur la vente d\'armes qui datait de la guerre du Vietnam', | ||||||
|             'upload_date': '20160523', |             'upload_date': '20160523', | ||||||
|         }, |         }, | ||||||
|         'params': { |         'params': { | ||||||
|             # rtmp download |             # m3u8 download | ||||||
|             'skip_download': True, |             'skip_download': True, | ||||||
|         }, |         }, | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1,74 +1,41 @@ | |||||||
| # coding: utf-8 | # coding: utf-8 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
|  |  | ||||||
| import re |  | ||||||
|  |  | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..utils import ( | from ..utils import int_or_none | ||||||
|     ExtractorError, |  | ||||||
|     unified_strdate, |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class TouTvIE(InfoExtractor): | class TouTvIE(InfoExtractor): | ||||||
|     IE_NAME = 'tou.tv' |     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 = { |     _TEST = { | ||||||
|         'url': 'http://www.tou.tv/30-vies/S04E41', |         'url': 'http://ici.tou.tv/garfield-tout-court/S2015E17', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': '30-vies_S04E41', |             'id': '122017', | ||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
|             'title': '30 vies Saison 4 / Épisode 41', |             'title': 'Saison 2015 Épisode 17', | ||||||
|             'description': 'md5:da363002db82ccbe4dafeb9cab039b09', |             'description': 'La photo de famille 2', | ||||||
|             'age_limit': 8, |             'upload_date': '20100717', | ||||||
|             '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', |  | ||||||
|         }, |         }, | ||||||
|         'params': { |         'params': { | ||||||
|             'skip_download': True,  # Requires rtmpdump |             # m3u8 download | ||||||
|  |             'skip_download': True, | ||||||
|         }, |         }, | ||||||
|         'skip': 'Only available in Canada' |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         mobj = re.match(self._VALID_URL, url) |         path = self._match_id(url) | ||||||
|         video_id = mobj.group('id') |         metadata = self._download_json('http://ici.tou.tv/presentation/%s' % path, path) | ||||||
|         webpage = self._download_webpage(url, video_id) |         video_id = metadata['IdMedia'] | ||||||
|  |         details = metadata['Details'] | ||||||
|         mediaId = self._search_regex( |         title = details['OriginalTitle'] | ||||||
|             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 |  | ||||||
|  |  | ||||||
|         return { |         return { | ||||||
|  |             '_type': 'url_transparent', | ||||||
|  |             'url': 'radiocanada:%s:%s' % (metadata.get('AppCode', 'toutv'), video_id), | ||||||
|             'id': video_id, |             'id': video_id, | ||||||
|             'title': self._og_search_title(webpage), |             'title': title, | ||||||
|             'url': video_url, |             'thumbnail': details.get('ImageUrl'), | ||||||
|             'description': self._og_search_description(webpage), |             'duration': int_or_none(details.get('LengthInSeconds')), | ||||||
|             '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', |  | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 remitamine
					remitamine