]>
jfr.im git - yt-dlp.git/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 metadata
= self
. get_metadata ( 'kYEXFC/ %s ' % list ( vdata
[ 'files' ]. values ())[ 0 ], video_id
)
55 description
= vdata
. get ( 'description' ) or metadata
. get ( 'description' )
56 duration
= int_or_none ( vdata
. get ( 'duration' )) or metadata
. get ( 'duration' )
60 for ( fkey
, vid
) in vdata
[ 'files' ]. items ():
61 if fkey
== 'hls_phone' and 'hls_tablet' in vdata
[ 'files' ]:
63 release_url
= 'http://link.theplatform.com/s/kYEXFC/ %s ?format=SMIL&mbr=true' % vid
65 release_url
+= '&manifest=f4m'
66 tp_formats
, tp_subtitles
= self
._ extract
_ theplatform
_ smil
( release_url
, video_id
, 'Downloading %s SMIL data' % fkey
)
67 formats
. extend ( tp_formats
)
68 subtitles
= self
._ merge
_ subtitles
( subtitles
, tp_subtitles
)
69 self
._ sort
_ formats
( formats
)
73 'display_id' : display_id
,
75 'description' : description
,
76 'thumbnail' : metadata
. get ( 'thumbnail' ),
79 'uploader_id' : uploader_id
,
80 'subtitles' : subtitles
,