mirror of
https://github.com/l1ving/youtube-dl
synced 2024-11-25 21:32:53 +08:00
5d1f0e607b
1) added comment to explain extra xml link download 2) changed {} entries to {0}, {1} etc 3) removed redundant language header (the others are required) 4) checked out the old version of the supported sites md (the change was not required)
75 lines
2.7 KiB
Python
75 lines
2.7 KiB
Python
# coding: utf-8
|
|
from __future__ import unicode_literals
|
|
|
|
from .common import InfoExtractor
|
|
|
|
|
|
class MiomioTvIE(InfoExtractor):
|
|
IE_NAME = 'miomio.tv'
|
|
_VALID_URL = r'https?://(?:www\.)?miomio\.tv/watch/cc(?P<id>[0-9]+)'
|
|
_TEST = {
|
|
'url': 'http://www.miomio.tv/watch/cc179734/',
|
|
'md5': '48de02137d0739c15b440a224ad364b9',
|
|
'info_dict': {
|
|
'id': '179734',
|
|
'title': u'\u624b\u7ed8\u52a8\u6f2b\u9b3c\u6ce3\u4f46\u4e01\u5168\u7a0b\u753b\u6cd5',
|
|
'ext': 'flv'
|
|
}
|
|
}
|
|
|
|
def _real_extract(self, url):
|
|
video_id = self._match_id(url)
|
|
webpage = self._download_webpage(url, video_id)
|
|
|
|
title = self._html_search_regex(r'<meta\s+name="description"\s+content="\s*([^"]*)\s*"', webpage, 'title')
|
|
ref_path = self._search_regex(r'src="(/mioplayer/.*?)"', webpage, 'ref_path')
|
|
referer = 'http://www.miomio.tv{0}'.format(ref_path)
|
|
xml_config = self._search_regex(r'flashvars="type=sina&(.*?)&cid=', webpage, 'xml config')
|
|
|
|
# skipping the following page causes lags and eventually connection drop-outs
|
|
# id is normally a rotating three digit value but a fixed value always appears to work
|
|
self._request_webpage("http://www.miomio.tv/mioplayer/mioplayerconfigfiles/xml.php?id={0}&r=cc{1}".format(id, 945), video_id)
|
|
|
|
# the following xml contains the actual configuration information on the video file(s)
|
|
xml_url = 'http://www.miomio.tv/mioplayer/mioplayerconfigfiles/sina.php?{0}'.format(xml_config)
|
|
vidconfig = self._download_xml(xml_url, video_id)
|
|
|
|
file_els = vidconfig.findall('.//durl')
|
|
|
|
entries = []
|
|
|
|
for file_el in file_els:
|
|
segment_id = file_el.find('order').text.strip()
|
|
segment_title = '_'.join([title, segment_id])
|
|
segment_duration = file_el.find('length').text.strip()
|
|
segment_url = file_el.find('url').text.strip()
|
|
|
|
entries.append({
|
|
'id': segment_id,
|
|
'title': segment_title,
|
|
'duration': segment_duration,
|
|
'url': segment_url
|
|
})
|
|
|
|
http_headers = {
|
|
'Referer': referer,
|
|
'Accept-Encoding': 'gzip, deflate',
|
|
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
|
|
}
|
|
|
|
if len(entries) == 1:
|
|
return {
|
|
'id': video_id,
|
|
'title': title,
|
|
'url': entries[0]['url'],
|
|
'http_headers': http_headers
|
|
}
|
|
|
|
return {
|
|
'_type': 'multi_video',
|
|
'id': video_id,
|
|
'title': title,
|
|
'entries': entries,
|
|
'http_headers': http_headers
|
|
}
|