|
|
@ -2,15 +2,11 @@ |
|
|
|
from __future__ import unicode_literals |
|
|
|
|
|
|
|
from .common import InfoExtractor |
|
|
|
from ..compat import ( |
|
|
|
compat_HTTPError, |
|
|
|
compat_urllib_parse_unquote_plus, |
|
|
|
) |
|
|
|
from ..compat import compat_HTTPError |
|
|
|
from ..utils import ( |
|
|
|
determine_ext, |
|
|
|
int_or_none, |
|
|
|
js_to_json, |
|
|
|
sanitized_Request, |
|
|
|
ExtractorError, |
|
|
|
urlencode_postdata |
|
|
|
) |
|
|
@ -39,31 +35,21 @@ class FunimationIE(InfoExtractor): |
|
|
|
}, { |
|
|
|
'url': 'https://www.funimation.com/shows/attack-on-titan-junior-high/broadcast-dub-preview/', |
|
|
|
'info_dict': { |
|
|
|
'id': '9635', |
|
|
|
'id': '210051', |
|
|
|
'display_id': 'broadcast-dub-preview', |
|
|
|
'ext': 'mp4', |
|
|
|
'title': 'Attack on Titan: Junior High - Broadcast Dub Preview', |
|
|
|
'description': 'md5:f8ec49c0aff702a7832cd81b8a44f803', |
|
|
|
'thumbnail': r're:https?://.*\.(?:jpg|png)', |
|
|
|
}, |
|
|
|
'skip': 'Access without user interaction is forbidden by CloudFlare', |
|
|
|
'params': { |
|
|
|
# m3u8 download |
|
|
|
'skip_download': True, |
|
|
|
}, |
|
|
|
}, { |
|
|
|
'url': 'https://www.funimationnow.uk/shows/puzzle-dragons-x/drop-impact/simulcast/', |
|
|
|
'only_matching': True, |
|
|
|
}] |
|
|
|
|
|
|
|
_LOGIN_URL = 'http://www.funimation.com/login' |
|
|
|
|
|
|
|
def _extract_cloudflare_session_ua(self, url): |
|
|
|
ci_session_cookie = self._get_cookies(url).get('ci_session') |
|
|
|
if ci_session_cookie: |
|
|
|
ci_session = compat_urllib_parse_unquote_plus(ci_session_cookie.value) |
|
|
|
# ci_session is a string serialized by PHP function serialize() |
|
|
|
# This case is simple enough to use regular expressions only |
|
|
|
return self._search_regex( |
|
|
|
r'"user_agent";s:\d+:"([^"]+)"', ci_session, 'user agent', |
|
|
|
default=None) |
|
|
|
|
|
|
|
def _login(self): |
|
|
|
(username, password) = self._get_login_info() |
|
|
|
if username is None: |
|
|
|