aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2013-06-23 22:20:45 +0200
committerPhilipp Hagemeister <phihag@phihag.de>2013-06-23 22:20:45 +0200
commit97d2db017c67bedd1e50d149b51d60fcbfd26041 (patch)
tree8f276b638b475301c08240e53320f848cae92643 /youtube_dl/extractor
parent2c64df03991e1d65b0d12d4068267d69d918535d (diff)
[myspass] Move into own file and default to mp4 ext
Diffstat (limited to 'youtube_dl/extractor')
-rw-r--r--youtube_dl/extractor/myspass.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/youtube_dl/extractor/myspass.py b/youtube_dl/extractor/myspass.py
new file mode 100644
index 000000000..7b016bb86
--- /dev/null
+++ b/youtube_dl/extractor/myspass.py
@@ -0,0 +1,64 @@
+import os.path
+import xml.etree.ElementTree
+
+from .common import InfoExtractor
+from ..utils import (
+ compat_urllib_parse_urlparse,
+
+ ExtractorError,
+)
+
+
+class MySpassIE(InfoExtractor):
+ _VALID_URL = r'http://www.myspass.de/.*'
+
+ def _real_extract(self, url):
+ META_DATA_URL_TEMPLATE = 'http://www.myspass.de/myspass/includes/apps/video/getvideometadataxml.php?id=%s'
+
+ # video id is the last path element of the URL
+ # usually there is a trailing slash, so also try the second but last
+ url_path = compat_urllib_parse_urlparse(url).path
+ url_parent_path, video_id = os.path.split(url_path)
+ if not video_id:
+ _, video_id = os.path.split(url_parent_path)
+
+ # get metadata
+ metadata_url = META_DATA_URL_TEMPLATE % video_id
+ metadata_text = self._download_webpage(metadata_url, video_id)
+ metadata = xml.etree.ElementTree.fromstring(metadata_text.encode('utf-8'))
+
+ # extract values from metadata
+ url_flv_el = metadata.find('url_flv')
+ if url_flv_el is None:
+ raise ExtractorError(u'Unable to extract download url')
+ video_url = url_flv_el.text
+ extension = os.path.splitext(video_url)[1][1:]
+ title_el = metadata.find('title')
+ if title_el is None:
+ raise ExtractorError(u'Unable to extract title')
+ title = title_el.text
+ format_id_el = metadata.find('format_id')
+ if format_id_el is None:
+ format = 'mp4'
+ else:
+ format = format_id_el.text
+ description_el = metadata.find('description')
+ if description_el is not None:
+ description = description_el.text
+ else:
+ description = None
+ imagePreview_el = metadata.find('imagePreview')
+ if imagePreview_el is not None:
+ thumbnail = imagePreview_el.text
+ else:
+ thumbnail = None
+ info = {
+ 'id': video_id,
+ 'url': video_url,
+ 'title': title,
+ 'ext': extension,
+ 'format': format,
+ 'thumbnail': thumbnail,
+ 'description': description
+ }
+ return [info]