]>
Raphaƫl G. Git Repositories - youtubedl/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|seed)\.com/shows/(?:[^/]+/) {2} \?play=(?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 ,
53 def _real_extract ( self
, url
):
54 video_id
= self
._ match
_ id
( url
)
55 video_data
= self
._ download
_ json
(
56 'http://metaframe.digitalsmiths.tv/v2/CWtv/assets/ %s /partner/132?format=json' % video_id
, video_id
)
58 formats
= self
._ extract
_ m
3u8_ formats
(
59 video_data
[ 'videos' ][ 'variantplaylist' ][ 'uri' ], video_id
, 'mp4' )
63 'width' : image
. get ( 'width' ),
64 'height' : image
. get ( 'height' ),
65 } for image_id
, image
in video_data
[ 'images' ]. items () if image
. get ( 'uri' )] if video_data
. get ( 'images' ) else None
67 video_metadata
= video_data
[ 'assetFields' ]
71 'url' : video_metadata
[ 'UnicornCcUrl' ],
73 } if video_metadata
. get ( 'UnicornCcUrl' ) else None
77 'title' : video_metadata
[ 'title' ],
78 'description' : video_metadata
. get ( 'description' ),
79 'duration' : int_or_none ( video_metadata
. get ( 'duration' )),
80 'series' : video_metadata
. get ( 'seriesName' ),
81 'season_number' : int_or_none ( video_metadata
. get ( 'seasonNumber' )),
82 'season' : video_metadata
. get ( 'seasonName' ),
83 'episode_number' : int_or_none ( video_metadata
. get ( 'episodeNumber' )),
84 'timestamp' : parse_iso8601 ( video_data
. get ( 'startTime' )),
85 'thumbnails' : thumbnails
,
87 'subtitles' : subtitles
,