]>
 
 
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/cbsinteractive.py 
 
 
 
 
 
 
 
 
   2  from  __future__ 
import  unicode_literals
 
   6  from  . theplatform 
import  ThePlatformIE
 
   7  from  .. utils 
import  int_or_none
 
  10  class  CBSInteractiveIE ( ThePlatformIE
):  
  11      _VALID_URL 
=  r
'https?://(?:www\.)?(?P<site>cnet|zdnet)\.com/(?:videos|video/share)/(?P<id>[^/?]+)'  
  13          'url' :  'http://www.cnet.com/videos/hands-on-with-microsofts-windows-8-1-update/' ,  
  15              'id' :  '56f4ea68-bd21-4852-b08c-4de5b8354c60' ,  
  17              'title' :  'Hands-on with Microsoft Windows 8.1 Update' ,  
  18              'description' :  'The new update to the Windows 8 OS brings improved performance for mouse and keyboard users.' ,  
  19              'uploader_id' :  '6085384d-619e-11e3-b231-14feb5ca9861' ,  
  20              'uploader' :  'Sarah Mitroff' ,  
  22              'timestamp' :  1396479627 ,  
  23              'upload_date' :  '20140402' ,  
  26          'url' :  'http://www.cnet.com/videos/whiny-pothole-tweets-at-local-government-when-hit-by-cars-tomorrow-daily-187/' ,  
  28              'id' :  '56527b93-d25d-44e3-b738-f989ce2e49ba' ,  
  30              'title' :  'Whiny potholes tweet at local government when hit by cars (Tomorrow Daily 187)' ,  
  31              'description' :  'Khail and Ashley wonder what other civic woes can be solved by self-tweeting objects, investigate a new kind of VR camera and watch an origami robot self-assemble, walk, climb, dig and dissolve. #TDPothole' ,  
  32              'uploader_id' :  'b163284d-6b73-44fc-b3e6-3da66c392d40' ,  
  33              'uploader' :  'Ashley Esqueda' ,  
  35              'timestamp' :  1433289889 ,  
  36              'upload_date' :  '20150603' ,  
  39          'url' :  'http://www.zdnet.com/video/share/video-keeping-android-smartphones-and-tablets-secure/' ,  
  41              'id' :  'bc1af9f0-a2b5-4e54-880d-0d95525781c0' ,  
  43              'title' :  'Video: Keeping Android smartphones and tablets secure' ,  
  44              'description' :  'Here \' s the best way to keep Android devices secure, and what you do when they \' ve come to the end of their lives.' ,  
  45              'uploader_id' :  'f2d97ea2-8175-11e2-9d12-0018fe8a00b0' ,  
  46              'uploader' :  'Adrian Kingsley-Hughes' ,  
  47              'timestamp' :  1448961720 ,  
  48              'upload_date' :  '20151201' ,  
  52              'skip_download' :  True ,  
  55      TP_RELEASE_URL_TEMPLATE 
=  'http://link.theplatform.com/s/kYEXFC/ %s ?mbr=true'  
  61      def  _real_extract ( self
,  url
):  
  62          site
,  display_id 
=  re
. match ( self
._ VALID
_U RL
,  url
). groups ()  
  63          webpage 
=  self
._ download
_ webpage
( url
,  display_id
)  
  65          data_json 
=  self
._ html
_ search
_ regex
(  
  66              r
"data-(?:cnet|zdnet)-video(?:-uvp(?:js)?)?-options='([^']+)'" ,  
  68          data 
=  self
._ parse
_ json
( data_json
,  display_id
)  
  69          vdata 
=  data
. get ( 'video' )  or  data
[ 'videos' ][ 0 ]  
  71          video_id 
=  vdata
[ 'id' ]  
  72          title 
=  vdata
[ 'title' ]  
  73          author 
=  vdata
. get ( 'author' )  
  75              uploader 
=  ' %s %s '  % ( author
[ 'firstName' ],  author
[ 'lastName' ])  
  76              uploader_id 
=  author
. get ( 'id' )  
  81          media_guid_path 
=  'media/guid/ %d / %s '  % ( self
. MPX_ACCOUNTS
[ site
],  vdata
[ 'mpxRefId' ])  
  82          formats
,  subtitles 
= [], {}  
  83          for  ( fkey
,  vid
)  in  vdata
[ 'files' ]. items ():  
  84              if  fkey 
==  'hls_phone'  and  'hls_tablet'  in  vdata
[ 'files' ]:  
  86              release_url 
=  self
. TP_RELEASE_URL_TEMPLATE 
%  vid
 
  88                  release_url 
+=  '&manifest=f4m'  
  89              tp_formats
,  tp_subtitles 
=  self
._ extract
_ theplatform
_ smil
( release_url
,  video_id
,  'Downloading  %s  SMIL data'  %  fkey
)  
  90              formats
. extend ( tp_formats
)  
  91              subtitles 
=  self
._ merge
_ subtitles
( subtitles
,  tp_subtitles
)  
  92          self
._ sort
_ formats
( formats
)  
  94          info 
=  self
._ extract
_ theplatform
_ metadata
( 'kYEXFC/ %s '  %  media_guid_path
,  video_id
)  
  97              'display_id' :  display_id
,  
  99              'duration' :  int_or_none ( vdata
. get ( 'duration' )),  
 100              'uploader' :  uploader
,  
 101              'uploader_id' :  uploader_id
,  
 102              'subtitles' :  subtitles
,