|
|
@ -31,7 +31,23 @@ from ..aes import ( |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
class CrunchyrollIE(InfoExtractor): |
|
|
|
class CrunchyrollBaseIE(InfoExtractor): |
|
|
|
def _download_webpage(self, url_or_request, video_id, note=None, errnote=None, fatal=True, tries=1, timeout=5, encoding=None): |
|
|
|
request = (url_or_request if isinstance(url_or_request, compat_urllib_request.Request) |
|
|
|
else compat_urllib_request.Request(url_or_request)) |
|
|
|
# Accept-Language must be set explicitly to accept any language to avoid issues |
|
|
|
# similar to https://github.com/rg3/youtube-dl/issues/6797. |
|
|
|
# Along with IP address Crunchyroll uses Accept-Language to guess whether georestriction |
|
|
|
# should be imposed or not (from what I can see it just takes the first language |
|
|
|
# ignoring the priority and requires it to correspond the IP). By the way this causes |
|
|
|
# Crunchyroll to not work in georestriction cases in some browsers that don't place |
|
|
|
# the locale lang first in header. However allowing any language seems to workaround the issue. |
|
|
|
request.add_header('Accept-Language', '*') |
|
|
|
return super(CrunchyrollBaseIE, self)._download_webpage( |
|
|
|
request, video_id, note, errnote, fatal, tries, timeout, encoding) |
|
|
|
|
|
|
|
|
|
|
|
class CrunchyrollIE(CrunchyrollBaseIE): |
|
|
|
_VALID_URL = r'https?://(?:(?P<prefix>www|m)\.)?(?P<url>crunchyroll\.(?:com|fr)/(?:media(?:-|/\?id=)|[^/]*/[^/?&]*?)(?P<video_id>[0-9]+))(?:[/?&]|$)' |
|
|
|
_NETRC_MACHINE = 'crunchyroll' |
|
|
|
_TESTS = [{ |
|
|
@ -330,7 +346,7 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class CrunchyrollShowPlaylistIE(InfoExtractor): |
|
|
|
class CrunchyrollShowPlaylistIE(CrunchyrollBaseIE): |
|
|
|
IE_NAME = "crunchyroll:playlist" |
|
|
|
_VALID_URL = r'https?://(?:(?P<prefix>www|m)\.)?(?P<url>crunchyroll\.com/(?!(?:news|anime-news|library|forum|launchcalendar|lineup|store|comics|freetrial|login))(?P<id>[\w\-]+))/?$' |
|
|
|
|
|
|
|