|
@ -9,7 +9,7 @@ from .common import InfoExtractor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TudouIE(InfoExtractor): |
|
|
class TudouIE(InfoExtractor): |
|
|
_VALID_URL = r'(?:http://)?(?:www\.)?tudou\.com/(?:listplay|programs|albumplay)/(?:view|(.+?))/(?:([^/]+)|([^/]+))(?:\.html)?' |
|
|
|
|
|
|
|
|
_VALID_URL = r'https?://(?:www\.)?tudou\.com/(?:listplay|programs(?:/view)?|albumplay)/.*?/(?P<id>[^/?#]+?)(?:\.html)?/?(?:$|[?#])' |
|
|
_TESTS = [{ |
|
|
_TESTS = [{ |
|
|
'url': 'http://www.tudou.com/listplay/zzdE77v6Mmo/2xN2duXMxmw.html', |
|
|
'url': 'http://www.tudou.com/listplay/zzdE77v6Mmo/2xN2duXMxmw.html', |
|
|
'md5': '140a49ed444bd22f93330985d8475fcb', |
|
|
'md5': '140a49ed444bd22f93330985d8475fcb', |
|
@ -27,13 +27,6 @@ class TudouIE(InfoExtractor): |
|
|
'title': 'La Sylphide-Bolshoi-Ekaterina Krysanova & Vyacheslav Lopatin 2012', |
|
|
'title': 'La Sylphide-Bolshoi-Ekaterina Krysanova & Vyacheslav Lopatin 2012', |
|
|
'thumbnail': 're:^https?://.*\.jpg$', |
|
|
'thumbnail': 're:^https?://.*\.jpg$', |
|
|
} |
|
|
} |
|
|
}, { |
|
|
|
|
|
'url': 'http://www.tudou.com/albumplay/TenTw_JgiPM/PzsAs5usU9A.html', |
|
|
|
|
|
'info_dict': { |
|
|
|
|
|
'title': 'todo.mp4', |
|
|
|
|
|
}, |
|
|
|
|
|
'add_ie': ['Youku'], |
|
|
|
|
|
'skip': 'Only works from China' |
|
|
|
|
|
}] |
|
|
}] |
|
|
|
|
|
|
|
|
def _url_for_id(self, id, quality=None): |
|
|
def _url_for_id(self, id, quality=None): |
|
@ -45,8 +38,7 @@ class TudouIE(InfoExtractor): |
|
|
return final_url |
|
|
return final_url |
|
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
def _real_extract(self, url): |
|
|
mobj = re.match(self._VALID_URL, url) |
|
|
|
|
|
video_id = mobj.group(2) |
|
|
|
|
|
|
|
|
video_id = self._match_id(url) |
|
|
webpage = self._download_webpage(url, video_id) |
|
|
webpage = self._download_webpage(url, video_id) |
|
|
|
|
|
|
|
|
m = re.search(r'vcode:\s*[\'"](.+?)[\'"]', webpage) |
|
|
m = re.search(r'vcode:\s*[\'"](.+?)[\'"]', webpage) |
|
@ -87,4 +79,9 @@ class TudouIE(InfoExtractor): |
|
|
} |
|
|
} |
|
|
result.append(part_info) |
|
|
result.append(part_info) |
|
|
|
|
|
|
|
|
return result |
|
|
|
|
|
|
|
|
return { |
|
|
|
|
|
'_type': 'multi_video', |
|
|
|
|
|
'entries': result, |
|
|
|
|
|
'id': video_id, |
|
|
|
|
|
'title': title, |
|
|
|
|
|
} |