]>
jfr.im git - yt-dlp.git/blob - youtube_dl/extractor/gdcvault.py
1 from __future__
import unicode_literals
5 import xml
.etree
.ElementTree
7 from .common
import InfoExtractor
8 from ..utils
import unified_strdate
11 class GDCVaultIE(InfoExtractor
):
12 _VALID_URL
= r
'https?://(?:www\.)?gdcvault\.com/play/(?P<id>\d+)/(?P<name>(\w|-)+)'
15 u
'url': u
'http://www.gdcvault.com/play/1019721/Doki-Doki-Universe-Sweet-Simple',
16 u
'md5': u
'7ce8388f544c88b7ac11c7ab1b593704',
20 u
"title": u
"Doki-Doki Universe: Sweet, Simple and Genuine (GDC Next 10)"
24 def _real_extract(self
, url
):
25 mobj
= re
.match(self
._VALID
_URL
, url
)
27 video_id
= mobj
.group('id')
28 webpage_url
= 'http://www.gdcvault.com/play/' + video_id
30 start_page
= self
._download
_webpage
(webpage_url
, video_id
)
32 self
.report_extraction(video_id
)
34 xml_root
= self
._html
_search
_regex
(r
'<iframe src="(?P<xml_root>.*?)player.html.*?".*?</iframe>', start_page
, 'xml root')
35 xml_name
= self
._html
_search
_regex
(r
'<iframe src=".*?\?xml=(?P<xml_file>.+?\.xml).*?".*?</iframe>', start_page
, 'xml filename')
36 xml_decription_url
= xml_root
+ 'xml/' + xml_name
38 xml_description
= self
._download
_xml
(xml_decription_url
, video_id
)
40 video_title
= xml_description
.find('./metadata/title').text
42 mp4_video
= xml_description
.find('./metadata/mp4video').text
43 mobj
= re
.match(r
'(?P<root>https?://.*?/).*', mp4_video
)
44 video_root
= mobj
.group('root')
46 formats
= xml_description
.findall('./metadata/MBRVideos/MBRVideo')
48 for format
in formats
:
49 mobj
= re
.match(r
'mp4\:(?P<path>.*)', format
.find('streamName').text
)
50 url
= video_root
+ mobj
.group('path')
51 vbr
= format
.find('bitrate').text
52 video_formats
.append({
59 'formats': video_formats
,