]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/cwtv.py 
1ab9333b2b15c4ec96bcf1583aa6d0f491aafb76
   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 ,   32          'skip' :  'redirect to http://cwtv.com/shows/arrow/' ,   34          'url' :  'http://www.cwseed.com/shows/whose-line-is-it-anyway/jeff-davis-4/?play=24282b12-ead2-42f2-95ad-26770c2c6088' ,   36              'id' :  '24282b12-ead2-42f2-95ad-26770c2c6088' ,   38              'title' :  'Jeff Davis 4' ,   39              'description' :  'Jeff Davis is back to make you laugh.' ,   41              'series' :  'Whose Line Is It Anyway?' ,   45              'upload_date' :  '20151006' ,   46              'timestamp' :  1444107300 ,   49          'url' :  'http://cwtv.com/thecw/chroniclesofcisco/?play=8adebe35-f447-465f-ab52-e863506ff6d6' ,   50          'only_matching' :  True ,   52          'url' :  'http://cwtvpr.com/the-cw/video?watch=9eee3f60-ef4e-440b-b3b2-49428ac9c54e' ,   53          'only_matching' :  True ,   55          'url' :  'http://cwtv.com/shows/arrow/legends-of-yesterday/?watch=6b15e985-9345-4f60-baf8-56e96be57c63' ,   56          'only_matching' :  True ,   59      def  _real_extract ( self
,  url
):   60          video_id 
=  self
._ match
_ id
( url
)   63          for  partner 
in  ( 154 ,  213 ):   64              vdata 
=  self
._ download
_ json
(   65                  'http://metaframe.digitalsmiths.tv/v2/CWtv/assets/ %s /partner/ %d ?format=json'  % ( video_id
,  partner
),  video_id
,  fatal
= False )   69              for  quality
,  quality_data 
in  vdata
. get ( 'videos' , {}). items ():   70                  quality_url 
=  quality_data
. get ( 'uri' )   73                  if  quality 
==  'variantplaylist' :   74                      formats
. extend ( self
._ extract
_ m
3u8_ formats
(   75                          quality_url
,  video_id
,  'mp4' ,  m3u8_id
= 'hls' ,  fatal
= False ))   77                      tbr 
=  int_or_none ( quality_data
. get ( 'bitrate' ))   78                      format_id 
=  'http'  + ( '- %d '  %  tbr 
if  tbr 
else  '' )   79                      if  self
._ is
_ valid
_u rl
( quality_url
,  video_id
,  format_id
):   81                              'format_id' :  format_id
,   85          self
._ sort
_ formats
( formats
)   89              'width' :  image
. get ( 'width' ),   90              'height' :  image
. get ( 'height' ),   91          }  for  image_id
,  image 
in  video_data
[ 'images' ]. items ()  if  image
. get ( 'uri' )]  if  video_data
. get ( 'images' )  else None   93          video_metadata 
=  video_data
[ 'assetFields' ]   97                  'url' :  video_metadata
[ 'UnicornCcUrl' ],   99          }  if  video_metadata
. get ( 'UnicornCcUrl' )  else None  103              'title' :  video_metadata
[ 'title' ],  104              'description' :  video_metadata
. get ( 'description' ),  105              'duration' :  int_or_none ( video_metadata
. get ( 'duration' )),  106              'series' :  video_metadata
. get ( 'seriesName' ),  107              'season_number' :  int_or_none ( video_metadata
. get ( 'seasonNumber' )),  108              'season' :  video_metadata
. get ( 'seasonName' ),  109              'episode_number' :  int_or_none ( video_metadata
. get ( 'episodeNumber' )),  110              'timestamp' :  parse_iso8601 ( video_data
. get ( 'startTime' )),  111              'thumbnails' :  thumbnails
,  113              'subtitles' :  subtitles
,