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