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