]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/abcotvs.py
   2 from __future__ 
import unicode_literals
 
   6 from .common 
import InfoExtractor
 
   7 from ..compat 
import compat_str
 
  15 class ABCOTVSIE(InfoExtractor
): 
  17     IE_DESC 
= 'ABC Owned Television Stations' 
  18     _VALID_URL 
= r
'https?://(?P<site>abc(?:7(?:news|ny|chicago)?|11|13|30)|6abc)\.com(?:(?:/[^/]+)*/(?P<display_id>[^/]+))?/(?P<id>\d+)' 
  21             'url': 'http://abc7news.com/entertainment/east-bay-museum-celebrates-vintage-synthesizers/472581/', 
  24                 'display_id': 'east-bay-museum-celebrates-vintage-synthesizers', 
  26                 'title': 'East Bay museum celebrates synthesized music', 
  27                 'description': 'md5:24ed2bd527096ec2a5c67b9d5a9005f3', 
  28                 'thumbnail': r
're:^https?://.*\.jpg$', 
  29                 'timestamp': 1421118520, 
  30                 'upload_date': '20150113', 
  34                 'skip_download': True, 
  38             'url': 'http://abc7news.com/472581', 
  39             'only_matching': True, 
  42             'url': 'https://6abc.com/man-75-killed-after-being-struck-by-vehicle-in-chester/5725182/', 
  43             'only_matching': True, 
  57     def _real_extract(self
, url
): 
  58         site
, display_id
, video_id 
= re
.match(self
._VALID
_URL
, url
).groups() 
  59         display_id 
= display_id 
or video_id
 
  60         station 
= self
._SITE
_MAP
[site
] 
  62         data 
= self
._download
_json
( 
  63             'https://api.abcotvs.com/v2/content', display_id
, query
={ 
  65                 'key': 'otv.web.%s.story' % station
, 
  68         video 
= try_get(data
, lambda x
: x
['featuredMedia']['video'], dict) or data
 
  69         video_id 
= compat_str(dict_get(video
, ('id', 'publishedKey'), video_id
)) 
  70         title 
= video
.get('title') or video
['linkText'] 
  73         m3u8_url 
= video
.get('m3u8') 
  75             formats 
= self
._extract
_m
3u8_formats
( 
  76                 video
['m3u8'].split('?')[0], display_id
, 'mp4', m3u8_id
='hls', fatal
=False) 
  77         mp4_url 
= video
.get('mp4') 
  86         self
._sort
_formats
(formats
) 
  88         image 
= video
.get('image') or {} 
  92             'display_id': display_id
, 
  94             'description': dict_get(video
, ('description', 'caption'), try_get(video
, lambda x
: x
['meta']['description'])), 
  95             'thumbnail': dict_get(image
, ('source', 'dynamicSource')), 
  96             'timestamp': int_or_none(video
.get('date')), 
  97             'duration': int_or_none(video
.get('length')), 
 102 class ABCOTVSClipsIE(InfoExtractor
): 
 103     IE_NAME 
= 'abcotvs:clips' 
 104     _VALID_URL 
= r
'https?://clips\.abcotvs\.com/(?:[^/]+/)*video/(?P<id>\d+)' 
 106         'url': 'https://clips.abcotvs.com/kabc/video/214814', 
 110             'title': 'SpaceX launch pad explosion destroys rocket, satellite', 
 111             'description': 'md5:9f186e5ad8f490f65409965ee9c7be1b', 
 112             'upload_date': '20160901', 
 113             'timestamp': 1472756695, 
 117             'skip_download': True, 
 121     def _real_extract(self
, url
): 
 122         video_id 
= self
._match
_id
(url
) 
 123         video_data 
= self
._download
_json
('https://clips.abcotvs.com/vogo/video/getByIds?ids=' + video_id
, video_id
)['results'][0] 
 124         title 
= video_data
['title'] 
 125         formats 
= self
._extract
_m
3u8_formats
( 
 126             video_data
['videoURL'].split('?')[0], video_id
, 'mp4') 
 127         self
._sort
_formats
(formats
) 
 132             'description': video_data
.get('description'), 
 133             'thumbnail': video_data
.get('thumbnailURL'), 
 134             'duration': int_or_none(video_data
.get('duration')), 
 135             'timestamp': int_or_none(video_data
.get('pubDate')),