[myspass] Move into own file and default to mp4 ext
This commit is contained in:
parent
2c64df0399
commit
97d2db017c
2 changed files with 65 additions and 53 deletions
|
@ -39,6 +39,7 @@ from .extractor.keek import KeekIE
|
||||||
from .extractor.metacafe import MetacafeIE
|
from .extractor.metacafe import MetacafeIE
|
||||||
from .extractor.mixcloud import MixcloudIE
|
from .extractor.mixcloud import MixcloudIE
|
||||||
from .extractor.mtv import MTVIE
|
from .extractor.mtv import MTVIE
|
||||||
|
from .extractor.myspass import MySpassIE
|
||||||
from .extractor.myvideo import MyVideoIE
|
from .extractor.myvideo import MyVideoIE
|
||||||
from .extractor.nba import NBAIE
|
from .extractor.nba import NBAIE
|
||||||
from .extractor.statigram import StatigramIE
|
from .extractor.statigram import StatigramIE
|
||||||
|
@ -88,59 +89,6 @@ from .extractor.zdf import ZDFIE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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 = ext
|
|
||||||
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]
|
|
||||||
|
|
||||||
class SpiegelIE(InfoExtractor):
|
class SpiegelIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?spiegel\.de/video/[^/]*-(?P<videoID>[0-9]+)(?:\.html)?(?:#.*)?$'
|
_VALID_URL = r'https?://(?:www\.)?spiegel\.de/video/[^/]*-(?P<videoID>[0-9]+)(?:\.html)?(?:#.*)?$'
|
||||||
|
|
64
youtube_dl/extractor/myspass.py
Normal file
64
youtube_dl/extractor/myspass.py
Normal file
|
@ -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]
|
Loading…
Reference in a new issue