|
|
@ -66,7 +66,12 @@ class TouTvIE(RadioCanadaIE):
|
|
|
|
|
|
|
|
|
|
|
|
def _real_extract(self, url):
|
|
|
|
def _real_extract(self, url):
|
|
|
|
path = self._match_id(url)
|
|
|
|
path = self._match_id(url)
|
|
|
|
metadata = self._download_json('http://ici.tou.tv/presentation/%s' % path, path)
|
|
|
|
metadata = self._download_json(
|
|
|
|
|
|
|
|
'https://services.radio-canada.ca/toutv/presentation/%s' % path, path, query={
|
|
|
|
|
|
|
|
'client_key': self._CLIENT_KEY,
|
|
|
|
|
|
|
|
'device': 'web',
|
|
|
|
|
|
|
|
'version': 4,
|
|
|
|
|
|
|
|
})
|
|
|
|
# IsDrm does not necessarily mean the video is DRM protected (see
|
|
|
|
# IsDrm does not necessarily mean the video is DRM protected (see
|
|
|
|
# https://github.com/ytdl-org/youtube-dl/issues/13994).
|
|
|
|
# https://github.com/ytdl-org/youtube-dl/issues/13994).
|
|
|
|
if metadata.get('IsDrm'):
|
|
|
|
if metadata.get('IsDrm'):
|
|
|
@ -77,6 +82,12 @@ class TouTvIE(RadioCanadaIE):
|
|
|
|
return merge_dicts({
|
|
|
|
return merge_dicts({
|
|
|
|
'id': video_id,
|
|
|
|
'id': video_id,
|
|
|
|
'title': details.get('OriginalTitle'),
|
|
|
|
'title': details.get('OriginalTitle'),
|
|
|
|
|
|
|
|
'description': details.get('Description'),
|
|
|
|
'thumbnail': details.get('ImageUrl'),
|
|
|
|
'thumbnail': details.get('ImageUrl'),
|
|
|
|
'duration': int_or_none(details.get('LengthInSeconds')),
|
|
|
|
'duration': int_or_none(details.get('LengthInSeconds')),
|
|
|
|
|
|
|
|
'series': metadata.get('ProgramTitle'),
|
|
|
|
|
|
|
|
'season_number': int_or_none(metadata.get('SeasonNumber')),
|
|
|
|
|
|
|
|
'season': metadata.get('SeasonTitle'),
|
|
|
|
|
|
|
|
'episode_number': int_or_none(metadata.get('EpisodeNumber')),
|
|
|
|
|
|
|
|
'episode': metadata.get('EpisodeTitle'),
|
|
|
|
}, self._extract_info(metadata.get('AppCode', 'toutv'), video_id))
|
|
|
|
}, self._extract_info(metadata.get('AppCode', 'toutv'), video_id))
|
|
|
|