]>
jfr.im git - yt-dlp.git/blob - youtube_dl/extractor/escapist.py
1 from __future__
import unicode_literals
3 from . common
import InfoExtractor
13 class EscapistIE ( InfoExtractor
):
14 _VALID_URL
= r
'https?://?(www\.)?escapistmagazine\.com/videos/view/[^/?#]+/(?P<id>[0-9]+)-[^/?#]*(?:$|[?#])'
16 'url' : 'http://www.escapistmagazine.com/videos/view/the-escapist-presents/6618-Breaking-Down-Baldurs-Gate' ,
17 'md5' : 'ab3a706c681efca53f0a35f1415cf0d1' ,
21 'description' : "Baldur's Gate: Original, Modded or Enhanced Edition? I'll break down what you can expect from the new Baldur's Gate: Enhanced Edition." ,
22 'uploader_id' : 'the-escapist-presents' ,
23 'uploader' : 'The Escapist Presents' ,
24 'title' : "Breaking Down Baldur's Gate" ,
28 def _real_extract ( self
, url
):
29 video_id
= self
._ match
_ id
( url
)
30 webpage
= self
._ download
_ webpage
( url
, video_id
)
32 uploader_id
= self
._ html
_ search
_ regex
(
33 r
"<h1 class='headline'><a href='/videos/view/(.*?)'" ,
34 webpage
, 'uploader ID' , fatal
= False )
35 uploader
= self
._ html
_ search
_ regex
(
36 r
"<h1 class='headline'>(.*?)</a>" ,
37 webpage
, 'uploader' , fatal
= False )
38 description
= self
._ html
_ search
_ meta
( 'description' , webpage
)
40 raw_title
= self
._ html
_ search
_ meta
( 'title' , webpage
, fatal
= True )
41 title
= raw_title
. partition ( ' : ' )[ 2 ]
43 player_url
= self
._ og
_ search
_ video
_u rl
( webpage
, name
= 'player URL' )
44 config_url
= compat_urllib_parse
. unquote ( self
._ search
_ regex
(
45 r
'config=(.*)$' , player_url
, 'config URL' ))
49 def _add_format ( name
, cfgurl
, quality
):
50 config
= self
._ download
_ json
(
52 'Downloading ' + name
+ ' configuration' ,
53 'Unable to download ' + name
+ ' configuration' ,
54 transform_source
= js_to_json
)
56 playlist
= config
[ 'playlist' ]
58 'url' : playlist
[ 1 ][ 'url' ],
63 _add_format ( 'normal' , config_url
, quality
= 0 )
64 hq_url
= ( config_url
+
65 ( '&hq=1' if '?' in config_url
else config_url
+ '?hq=1' ))
67 _add_format ( 'hq' , hq_url
, quality
= 1 )
68 except ExtractorError
:
69 pass # That's fine, we'll just use normal quality
71 self
._ sort
_ formats
( formats
)
77 'uploader_id' : uploader_id
,
79 'thumbnail' : self
._ og
_ search
_ thumbnail
( webpage
),
80 'description' : description
,
81 'player_url' : player_url
,