]>
jfr.im git - yt-dlp.git/blob - youtube_dl/extractor/cwtv.py
2 from __future__
import unicode_literals
4 from . common
import InfoExtractor
11 class CWTVIE ( InfoExtractor
):
12 _VALID_URL
= r
'https?://(?:www\.)?cw(?:tv(?:pr)?|seed)\.com/(?:shows/)?(?:[^/]+/)+[^?]*\?.*\b(?:play|watch)=(?P<id>[a-z0-9] {8} -[a-z0-9] {4} -[a-z0-9] {4} -[a-z0-9] {4} -[a-z0-9] {12} )'
14 'url' : 'http://cwtv.com/shows/arrow/legends-of-yesterday/?play=6b15e985-9345-4f60-baf8-56e96be57c63' ,
16 'id' : '6b15e985-9345-4f60-baf8-56e96be57c63' ,
18 'title' : 'Legends of Yesterday' ,
19 'description' : 'Oliver and Barry Allen take Kendra Saunders and Carter Hall to a remote location to keep them hidden from Vandal Savage while they figure out how to defeat him.' ,
25 'upload_date' : '20151203' ,
26 'timestamp' : 1449122100 ,
30 'skip_download' : True ,
33 'url' : 'http://www.cwseed.com/shows/whose-line-is-it-anyway/jeff-davis-4/?play=24282b12-ead2-42f2-95ad-26770c2c6088' ,
35 'id' : '24282b12-ead2-42f2-95ad-26770c2c6088' ,
37 'title' : 'Jeff Davis 4' ,
38 'description' : 'Jeff Davis is back to make you laugh.' ,
40 'series' : 'Whose Line Is It Anyway?' ,
44 'upload_date' : '20151006' ,
45 'timestamp' : 1444107300 ,
49 'skip_download' : True ,
52 'url' : 'http://cwtv.com/thecw/chroniclesofcisco/?play=8adebe35-f447-465f-ab52-e863506ff6d6' ,
53 'only_matching' : True ,
55 'url' : 'http://cwtvpr.com/the-cw/video?watch=9eee3f60-ef4e-440b-b3b2-49428ac9c54e' ,
56 'only_matching' : True ,
58 'url' : 'http://cwtv.com/shows/arrow/legends-of-yesterday/?watch=6b15e985-9345-4f60-baf8-56e96be57c63' ,
59 'only_matching' : True ,
62 def _real_extract ( self
, url
):
63 video_id
= self
._ match
_ id
( url
)
64 video_data
= self
._ download
_ json
(
65 'http://metaframe.digitalsmiths.tv/v2/CWtv/assets/ %s /partner/132?format=json' % video_id
, video_id
)
67 formats
= self
._ extract
_ m
3u8_ formats
(
68 video_data
[ 'videos' ][ 'variantplaylist' ][ 'uri' ], video_id
, 'mp4' )
69 self
._ sort
_ formats
( formats
)
73 'width' : image
. get ( 'width' ),
74 'height' : image
. get ( 'height' ),
75 } for image_id
, image
in video_data
[ 'images' ]. items () if image
. get ( 'uri' )] if video_data
. get ( 'images' ) else None
77 video_metadata
= video_data
[ 'assetFields' ]
81 'url' : video_metadata
[ 'UnicornCcUrl' ],
83 } if video_metadata
. get ( 'UnicornCcUrl' ) else None
87 'title' : video_metadata
[ 'title' ],
88 'description' : video_metadata
. get ( 'description' ),
89 'duration' : int_or_none ( video_metadata
. get ( 'duration' )),
90 'series' : video_metadata
. get ( 'seriesName' ),
91 'season_number' : int_or_none ( video_metadata
. get ( 'seasonNumber' )),
92 'season' : video_metadata
. get ( 'seasonName' ),
93 'episode_number' : int_or_none ( video_metadata
. get ( 'episodeNumber' )),
94 'timestamp' : parse_iso8601 ( video_data
. get ( 'startTime' )),
95 'thumbnails' : thumbnails
,
97 'subtitles' : subtitles
,