|
|
@ -9,7 +9,7 @@ import xml.etree.ElementTree
|
|
|
|
|
|
|
|
|
|
|
|
from hashlib import sha1
|
|
|
|
from hashlib import sha1
|
|
|
|
from math import pow, sqrt, floor
|
|
|
|
from math import pow, sqrt, floor
|
|
|
|
from .common import InfoExtractor
|
|
|
|
from .subtitles import SubtitlesInfoExtractor
|
|
|
|
from ..utils import (
|
|
|
|
from ..utils import (
|
|
|
|
ExtractorError,
|
|
|
|
ExtractorError,
|
|
|
|
compat_urllib_parse,
|
|
|
|
compat_urllib_parse,
|
|
|
@ -26,7 +26,7 @@ from ..aes import (
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CrunchyrollIE(InfoExtractor):
|
|
|
|
class CrunchyrollIE(SubtitlesInfoExtractor):
|
|
|
|
_VALID_URL = r'https?://(?:(?P<prefix>www|m)\.)?(?P<url>crunchyroll\.com/(?:[^/]*/[^/?&]*?|media/\?id=)(?P<video_id>[0-9]+))(?:[/?&]|$)'
|
|
|
|
_VALID_URL = r'https?://(?:(?P<prefix>www|m)\.)?(?P<url>crunchyroll\.com/(?:[^/]*/[^/?&]*?|media/\?id=)(?P<video_id>[0-9]+))(?:[/?&]|$)'
|
|
|
|
_TEST = {
|
|
|
|
_TEST = {
|
|
|
|
'url': 'http://www.crunchyroll.com/wanna-be-the-strongest-in-the-world/episode-1-an-idol-wrestler-is-born-645513',
|
|
|
|
'url': 'http://www.crunchyroll.com/wanna-be-the-strongest-in-the-world/episode-1-an-idol-wrestler-is-born-645513',
|
|
|
@ -271,6 +271,10 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
subtitles[lang_code] = self._convert_subtitles_to_srt(subtitle)
|
|
|
|
subtitles[lang_code] = self._convert_subtitles_to_srt(subtitle)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if self._downloader.params.get('listsubtitles', False):
|
|
|
|
|
|
|
|
self._list_available_subtitles(video_id, subtitles)
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
'id': video_id,
|
|
|
|
'id': video_id,
|
|
|
|
'title': video_title,
|
|
|
|
'title': video_title,
|
|
|
|