]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/cnet.py 
   2  from  __future__ 
import  unicode_literals
   4  from  . theplatform 
import  ThePlatformIE
   5  from  .. utils 
import  int_or_none
   8  class  CNETIE ( ThePlatformIE
):    9      _VALID_URL 
=  r
'https?://(?:www\.)?cnet\.com/videos/(?P<id>[^/]+)/'   11          'url' :  'http://www.cnet.com/videos/hands-on-with-microsofts-windows-8-1-update/' ,   13              'id' :  '56f4ea68-bd21-4852-b08c-4de5b8354c60' ,   15              'title' :  'Hands-on with Microsoft Windows 8.1 Update' ,   16              'description' :  'The new update to the Windows 8 OS brings improved performance for mouse and keyboard users.' ,   17              'uploader_id' :  '6085384d-619e-11e3-b231-14feb5ca9861' ,   18              'uploader' :  'Sarah Mitroff' ,   22          'url' :  'http://www.cnet.com/videos/whiny-pothole-tweets-at-local-government-when-hit-by-cars-tomorrow-daily-187/' ,   24              'id' :  '56527b93-d25d-44e3-b738-f989ce2e49ba' ,   26              'title' :  'Whiny potholes tweet at local government when hit by cars (Tomorrow Daily 187)' ,   27              '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' ,   28              'uploader_id' :  'b163284d-6b73-44fc-b3e6-3da66c392d40' ,   29              'uploader' :  'Ashley Esqueda' ,   34      def  _real_extract ( self
,  url
):   35          display_id 
=  self
._ match
_ id
( url
)   36          webpage 
=  self
._ download
_ webpage
( url
,  display_id
)   38          data_json 
=  self
._ html
_ search
_ regex
(   39              r
"data-cnet-video(?:-uvp)?-options='([^']+)'" ,   41          data 
=  self
._ parse
_ json
( data_json
,  display_id
)   42          vdata 
=  data
. get ( 'video' )  or  data
[ 'videos' ][ 0 ]   44          video_id 
=  vdata
[ 'id' ]   45          title 
=  vdata
[ 'title' ]   46          author 
=  vdata
. get ( 'author' )   48              uploader 
=  ' %s %s '  % ( author
[ 'firstName' ],  author
[ 'lastName' ])   49              uploader_id 
=  author
. get ( 'id' )   54          mpx_account 
=  data
[ 'config' ][ 'uvpConfig' ][ 'default' ][ 'mpx_account' ]   56          metadata 
=  self
. get_metadata ( ' %s / %s '  % ( mpx_account
,  list ( vdata
[ 'files' ]. values ())[ 0 ]),  video_id
)   57          description 
=  vdata
. get ( 'description' )  or  metadata
. get ( 'description' )   58          duration 
=  int_or_none ( vdata
. get ( 'duration' ))  or  metadata
. get ( 'duration' )   62          for  ( fkey
,  vid
)  in  vdata
[ 'files' ]. items ():   63              if  fkey 
==  'hls_phone'  and  'hls_tablet'  in  vdata
[ 'files' ]:   65              release_url 
=  'http://link.theplatform.com/s/ %s / %s ?format=SMIL&mbr=true'  % ( mpx_account
,  vid
)   67                  release_url 
+=  '&manifest=f4m'   68              tp_formats
,  tp_subtitles 
=  self
._ extract
_ theplatform
_ smil
( release_url
,  video_id
,  'Downloading  %s  SMIL data'  %  fkey
)   69              formats
. extend ( tp_formats
)   70              subtitles 
=  self
._ merge
_ subtitles
( subtitles
,  tp_subtitles
)   71          self
._ sort
_ formats
( formats
)   75              'display_id' :  display_id
,   77              'description' :  description
,   78              'thumbnail' :  metadata
. get ( 'thumbnail' ),   81              'uploader_id' :  uploader_id
,   82              'subtitles' :  subtitles
,