]>
jfr.im git - yt-dlp.git/blob - youtube_dl/extractor/escapist.py
4 from . common
import InfoExtractor
13 class EscapistIE ( InfoExtractor
):
14 _VALID_URL
= r
'^(https?://)?(www\.)?escapistmagazine\.com/videos/view/(?P<showname>[^/]+)/(?P<episode>[^/?]+)[/?]?.*$'
16 u
'url' : u
'http://www.escapistmagazine.com/videos/view/the-escapist-presents/6618-Breaking-Down-Baldurs-Gate' ,
17 u
'file' : u
'6618-Breaking-Down-Baldurs-Gate.mp4' ,
18 u
'md5' : u
'c6793dbda81388f4264c1ba18684a74d' ,
20 u
"description" : u
"Baldur's Gate: Original, Modded or Enhanced Edition? I'll break down what you can expect from the new Baldur's Gate: Enhanced Edition." ,
21 u
"uploader" : u
"the-escapist-presents" ,
22 u
"title" : u
"Breaking Down Baldur's Gate"
26 def _real_extract ( self
, url
):
27 mobj
= re
. match ( self
._ VALID
_U RL
, url
)
29 raise ExtractorError ( u
'Invalid URL: %s ' % url
)
30 showName
= mobj
. group ( 'showname' )
31 videoId
= mobj
. group ( 'episode' )
33 self
. report_extraction ( videoId
)
34 webpage
= self
._ download
_ webpage
( url
, videoId
)
36 videoDesc
= self
._ html
_ search
_ regex
( '<meta name="description" content="([^"]*)"' ,
37 webpage
, u
'description' , fatal
= False )
39 imgUrl
= self
._ html
_ search
_ regex
( '<meta property="og:image" content="([^"]*)"' ,
40 webpage
, u
'thumbnail' , fatal
= False )
42 playerUrl
= self
._ html
_ search
_ regex
( '<meta property="og:video" content="([^"]*)"' ,
43 webpage
, u
'player url' )
45 title
= self
._ html
_ search
_ regex
( '<meta name="title" content="([^"]*)"' ,
46 webpage
, u
'player url' ). split ( ' : ' )[- 1 ]
48 configUrl
= self
._ search
_ regex
( 'config=(.*)$' , playerUrl
, u
'config url' )
49 configUrl
= compat_urllib_parse
. unquote ( configUrl
)
51 configJSON
= self
._ download
_ webpage
( configUrl
, videoId
,
52 u
'Downloading configuration' ,
53 u
'unable to download configuration' )
55 # Technically, it's JavaScript, not JSON
56 configJSON
= configJSON
. replace ( "'" , '"' )
59 config
= json
. loads ( configJSON
)
60 except ( ValueError ,) as err
:
61 raise ExtractorError ( u
'Invalid JSON in configuration file: ' + compat_str ( err
))
63 playlist
= config
[ 'playlist' ]
64 videoUrl
= playlist
[ 1 ][ 'url' ]
74 'description' : videoDesc
,
75 'player_url' : playerUrl
,