1 from .common
import InfoExtractor
2 from ..compat
import compat_str
10 class ABCOTVSIE(InfoExtractor
):
12 IE_DESC
= 'ABC Owned Television Stations'
13 _VALID_URL
= r
'https?://(?P<site>abc(?:7(?:news|ny|chicago)?|11|13|30)|6abc)\.com(?:(?:/[^/]+)*/(?P<display_id>[^/]+))?/(?P<id>\d+)'
16 'url': 'http://abc7news.com/entertainment/east-bay-museum-celebrates-vintage-synthesizers/472581/',
19 'display_id': 'east-bay-museum-celebrates-vintage-synthesizers',
21 'title': 'East Bay museum celebrates synthesized music',
22 'description': 'md5:24ed2bd527096ec2a5c67b9d5a9005f3',
23 'thumbnail': r
're:^https?://.*\.jpg$',
24 'timestamp': 1421118520,
25 'upload_date': '20150113',
29 'skip_download': True,
33 'url': 'http://abc7news.com/472581',
34 'only_matching': True,
37 'url': 'https://6abc.com/man-75-killed-after-being-struck-by-vehicle-in-chester/5725182/',
38 'only_matching': True,
52 def _real_extract(self
, url
):
53 site
, display_id
, video_id
= self
._match
_valid
_url
(url
).groups()
54 display_id
= display_id
or video_id
55 station
= self
._SITE
_MAP
[site
]
57 data
= self
._download
_json
(
58 'https://api.abcotvs.com/v2/content', display_id
, query
={
60 'key': 'otv.web.%s.story' % station
,
63 video
= try_get(data
, lambda x
: x
['featuredMedia']['video'], dict) or data
64 video_id
= compat_str(dict_get(video
, ('id', 'publishedKey'), video_id
))
65 title
= video
.get('title') or video
['linkText']
68 m3u8_url
= video
.get('m3u8')
70 formats
= self
._extract
_m
3u8_formats
(
71 video
['m3u8'].split('?')[0], display_id
, 'mp4', m3u8_id
='hls', fatal
=False)
72 mp4_url
= video
.get('mp4')
82 image
= video
.get('image') or {}
86 'display_id': display_id
,
88 'description': dict_get(video
, ('description', 'caption'), try_get(video
, lambda x
: x
['meta']['description'])),
89 'thumbnail': dict_get(image
, ('source', 'dynamicSource')),
90 'timestamp': int_or_none(video
.get('date')),
91 'duration': int_or_none(video
.get('length')),
96 class ABCOTVSClipsIE(InfoExtractor
):
97 IE_NAME
= 'abcotvs:clips'
98 _VALID_URL
= r
'https?://clips\.abcotvs\.com/(?:[^/]+/)*video/(?P<id>\d+)'
100 'url': 'https://clips.abcotvs.com/kabc/video/214814',
104 'title': 'SpaceX launch pad explosion destroys rocket, satellite',
105 'description': 'md5:9f186e5ad8f490f65409965ee9c7be1b',
106 'upload_date': '20160901',
107 'timestamp': 1472756695,
111 'skip_download': True,
115 def _real_extract(self
, url
):
116 video_id
= self
._match
_id
(url
)
117 video_data
= self
._download
_json
('https://clips.abcotvs.com/vogo/video/getByIds?ids=' + video_id
, video_id
)['results'][0]
118 title
= video_data
['title']
119 formats
= self
._extract
_m
3u8_formats
(
120 video_data
['videoURL'].split('?')[0], video_id
, 'mp4')
125 'description': video_data
.get('description'),
126 'thumbnail': video_data
.get('thumbnailURL'),
127 'duration': int_or_none(video_data
.get('duration')),
128 'timestamp': int_or_none(video_data
.get('pubDate')),