]>
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
,