2 import xml
.etree
.ElementTree
4 from .common
import InfoExtractor
6 compat_urllib_parse_urlparse
,
12 class MySpassIE(InfoExtractor
):
13 _VALID_URL
= r
'http://www.myspass.de/.*'
15 def _real_extract(self
, url
):
16 META_DATA_URL_TEMPLATE
= 'http://www.myspass.de/myspass/includes/apps/video/getvideometadataxml.php?id=%s'
18 # video id is the last path element of the URL
19 # usually there is a trailing slash, so also try the second but last
20 url_path
= compat_urllib_parse_urlparse(url
).path
21 url_parent_path
, video_id
= os
.path
.split(url_path
)
23 _
, video_id
= os
.path
.split(url_parent_path
)
26 metadata_url
= META_DATA_URL_TEMPLATE
% video_id
27 metadata_text
= self
._download
_webpage
(metadata_url
, video_id
)
28 metadata
= xml
.etree
.ElementTree
.fromstring(metadata_text
.encode('utf-8'))
30 # extract values from metadata
31 url_flv_el
= metadata
.find('url_flv')
32 if url_flv_el
is None:
33 raise ExtractorError(u
'Unable to extract download url')
34 video_url
= url_flv_el
.text
35 extension
= os
.path
.splitext(video_url
)[1][1:]
36 title_el
= metadata
.find('title')
38 raise ExtractorError(u
'Unable to extract title')
40 format_id_el
= metadata
.find('format_id')
41 if format_id_el
is None:
44 format
= format_id_el
.text
45 description_el
= metadata
.find('description')
46 if description_el
is not None:
47 description
= description_el
.text
50 imagePreview_el
= metadata
.find('imagePreview')
51 if imagePreview_el
is not None:
52 thumbnail
= imagePreview_el
.text
61 'thumbnail': thumbnail
,
62 'description': description