-# coding: utf-8
-from __future__ import unicode_literals
-
-
from .common import InfoExtractor
from ..utils import (
float_or_none,
int_or_none,
parse_iso8601,
+ str_or_none,
try_get,
)
title = content['Name']
content_package = content['ContentPackages'][0]
package_id = content_package['Id']
- content_package_url = api_base_url + 'contentpackages/%s/' % package_id
+ content_package_url = api_base_url + f'contentpackages/{package_id}/'
content_package = self._download_json(
content_package_url, content_id, query={
'$include': '[HasClosedCaptions]',
formats.extend(self._extract_mpd_formats(
manifest_base_url + 'mpd', content_id,
mpd_id='dash', fatal=False))
- self._sort_formats(formats)
thumbnails = []
for image in (content.get('Images') or []):
'episode_number': int_or_none(content.get('Episode')),
'season': season.get('Name'),
'season_number': int_or_none(season.get('Number')),
- 'season_id': season.get('Id'),
+ 'season_id': str_or_none(season.get('Id')),
'series': try_get(content, lambda x: x['Media']['Name']),
'tags': tags,
'categories': categories,
}, {
'url': manifest_base_url + 'srt',
'ext': 'srt',
- }]
+ }],
}
return info
+
+
+class CPTwentyFourIE(InfoExtractor):
+ IE_NAME = 'cp24'
+ _GEO_COUNTRIES = ['CA']
+ _VALID_URL = r'https?://(?:www\.)?cp24\.com/news/(?P<id>[^?#]+)'
+
+ _TESTS = [{
+ 'url': 'https://www.cp24.com/news/video-shows-atm-being-ripped-out-of-business-by-pickup-truck-driver-in-mississauga-1.5676877',
+ 'info_dict': {
+ 'id': '2328005',
+ 'ext': 'mp4',
+ 'title': 'WATCH: Truck rips ATM from Mississauga business',
+ 'description': 'md5:cf7498480885f080a754389a2b2f7073',
+ 'timestamp': 1637618377,
+ 'season': 'Season 0',
+ 'season_number': 0,
+ 'season_id': '57974',
+ 'series': 'CTV News Toronto',
+ 'duration': 26.86,
+ 'thumbnail': 'http://images2.9c9media.com/image_asset/2014_11_5_2eb609a0-475b-0132-fbd6-34b52f6f1279_jpg_2000x1125.jpg',
+ 'upload_date': '20211122',
+ },
+ 'params': {'skip_download': True, 'format': 'bv'},
+ }]
+
+ def _real_extract(self, url):
+ display_id = self._match_id(url)
+ webpage = self._download_webpage(url, display_id)
+ video_id, destination = self._search_regex(
+ r'getAuthStates\("(?P<id>[^"]+)",\s?"(?P<destination>[^"]+)"\);',
+ webpage, 'video id and destination', group=('id', 'destination'))
+ return self.url_result(f'9c9media:{destination}:{video_id}', NineCNineMediaIE, video_id)