]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/aol.py
2 from __future__
import unicode_literals
6 from . common
import InfoExtractor
13 class AolIE ( InfoExtractor
):
14 IE_NAME
= 'on.aol.com'
15 _VALID_URL
= r
'(?:aol-video:|https?://(?:(?:www|on)\.)?aol\.com/(?:[^/]+/)*(?:[^/?#&]+-)?)(?P<id>[^/?#&]+)'
19 'url' : 'http://on.aol.com/video/u-s--official-warns-of-largest-ever-irs-phone-scam-518167793?icid=OnHomepageC2Wide_MustSee_Img' ,
20 'md5' : '18ef68f48740e86ae94b98da815eec42' ,
24 'title' : 'U.S. Official Warns Of \' Largest Ever \' IRS Phone Scam' ,
25 'description' : 'A major phone scam has cost thousands of taxpayers more than $1 million, with less than a month until income tax returns are due to the IRS.' ,
26 'timestamp' : 1395405060 ,
27 'upload_date' : '20140321' ,
28 'uploader' : 'Newsy Studio' ,
32 'skip_download' : True ,
35 # video with vidible ID
36 'url' : 'http://www.aol.com/video/view/netflix-is-raising-rates/5707d6b8e4b090497b04f706/' ,
38 'id' : '5707d6b8e4b090497b04f706' ,
40 'title' : 'Netflix is Raising Rates' ,
41 'description' : 'Netflix is rewarding millions of it’s long-standing members with an increase in cost. Veuer’s Carly Figueroa has more.' ,
42 'upload_date' : '20160408' ,
43 'timestamp' : 1460123280 ,
48 'skip_download' : True ,
51 'url' : 'http://on.aol.com/partners/abc-551438d309eab105804dbfe8/sneak-peek-was-haley-really-framed-570eaebee4b0448640a5c944' ,
52 'only_matching' : True ,
54 'url' : 'http://on.aol.com/shows/park-bench-shw518173474-559a1b9be4b0c3bfad3357a7?context=SH:SHW518173474:PL4327:1460619712763' ,
55 'only_matching' : True ,
57 'url' : 'http://on.aol.com/video/519442220' ,
58 'only_matching' : True ,
60 'url' : 'aol-video:5707d6b8e4b090497b04f706' ,
61 'only_matching' : True ,
64 def _real_extract ( self
, url
):
65 video_id
= self
._ match
_ id
( url
)
67 response
= self
._ download
_ json
(
68 'https://feedapi.b2c.on.aol.com/v1.0/app/videos/aolon/ %s /details' % video_id
,
70 if response
[ 'statusText' ] != 'Ok' :
71 raise ExtractorError ( ' %s said: %s ' % ( self
. IE_NAME
, response
[ 'statusText' ]), expected
= True )
73 video_data
= response
[ 'data' ]
75 m3u8_url
= video_data
. get ( 'videoMasterPlaylist' )
77 formats
. extend ( self
._ extract
_ m
3u8_ formats
(
78 m3u8_url
, video_id
, 'mp4' , m3u8_id
= 'hls' , fatal
= False ))
79 for rendition
in video_data
. get ( 'renditions' , []):
80 video_url
= rendition
. get ( 'url' )
83 ext
= rendition
. get ( 'format' )
85 formats
. extend ( self
._ extract
_ m
3u8_ formats
(
86 video_url
, video_id
, 'mp4' , m3u8_id
= 'hls' , fatal
= False ))
90 'format_id' : rendition
. get ( 'quality' ),
92 mobj
= re
. search ( r
'(\d+)x(\d+)' , video_url
)
95 'width' : int ( mobj
. group ( 1 )),
96 'height' : int ( mobj
. group ( 2 )),
99 self
._ sort
_ formats
( formats
, ( 'width' , 'height' , 'tbr' , 'format_id' ))
103 'title' : video_data
[ 'title' ],
104 'duration' : int_or_none ( video_data
. get ( 'duration' )),
105 'timestamp' : int_or_none ( video_data
. get ( 'publishDate' )),
106 'view_count' : int_or_none ( video_data
. get ( 'views' )),
107 'description' : video_data
. get ( 'description' ),
108 'uploader' : video_data
. get ( 'videoOwner' ),