|
|
|
@ -2,16 +2,17 @@ from __future__ import unicode_literals
|
|
|
|
|
|
|
|
|
|
import re
|
|
|
|
|
|
|
|
|
|
from ..compat import compat_urlparse
|
|
|
|
|
from ..utils import (
|
|
|
|
|
ExtractorError,
|
|
|
|
|
unescapeHTML,
|
|
|
|
|
unified_strdate,
|
|
|
|
|
US_RATINGS,
|
|
|
|
|
)
|
|
|
|
|
from .subtitles import SubtitlesInfoExtractor
|
|
|
|
|
from .common import InfoExtractor
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VikiIE(SubtitlesInfoExtractor):
|
|
|
|
|
class VikiIE(InfoExtractor):
|
|
|
|
|
IE_NAME = 'viki'
|
|
|
|
|
|
|
|
|
|
_VALID_URL = r'^https?://(?:www\.)?viki\.com/videos/(?P<id>[0-9]+v)'
|
|
|
|
@ -69,9 +70,6 @@ class VikiIE(SubtitlesInfoExtractor):
|
|
|
|
|
|
|
|
|
|
# subtitles
|
|
|
|
|
video_subtitles = self.extract_subtitles(video_id, info_webpage)
|
|
|
|
|
if self._downloader.params.get('listsubtitles', False):
|
|
|
|
|
self._list_available_subtitles(video_id, info_webpage)
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
'id': video_id,
|
|
|
|
@ -85,12 +83,15 @@ class VikiIE(SubtitlesInfoExtractor):
|
|
|
|
|
'upload_date': upload_date,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def _get_available_subtitles(self, video_id, info_webpage):
|
|
|
|
|
def _get_subtitles(self, video_id, info_webpage):
|
|
|
|
|
res = {}
|
|
|
|
|
for sturl_html in re.findall(r'<track src="([^"]+)"/>', info_webpage):
|
|
|
|
|
for sturl_html in re.findall(r'<track src="([^"]+)"', info_webpage):
|
|
|
|
|
sturl = unescapeHTML(sturl_html)
|
|
|
|
|
m = re.search(r'/(?P<lang>[a-z]+)\.vtt', sturl)
|
|
|
|
|
if not m:
|
|
|
|
|
continue
|
|
|
|
|
res[m.group('lang')] = sturl
|
|
|
|
|
res[m.group('lang')] = [{
|
|
|
|
|
'url': compat_urlparse.urljoin('http://www.viki.com', sturl),
|
|
|
|
|
'ext': 'vtt',
|
|
|
|
|
}]
|
|
|
|
|
return res
|
|
|
|
|