mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-01-07 17:16:08 +00:00
[funimation] fix extraction(closes #14089)
This commit is contained in:
parent
10026329c2
commit
929ba3997b
|
@ -1,6 +1,9 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..compat import compat_HTTPError
|
from ..compat import compat_HTTPError
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
|
@ -87,7 +90,7 @@ class FunimationIE(InfoExtractor):
|
||||||
|
|
||||||
video_id = title_data.get('id') or self._search_regex([
|
video_id = title_data.get('id') or self._search_regex([
|
||||||
r"KANE_customdimensions.videoID\s*=\s*'(\d+)';",
|
r"KANE_customdimensions.videoID\s*=\s*'(\d+)';",
|
||||||
r'<iframe[^>]+src="/player/(\d+)"',
|
r'<iframe[^>]+src="/player/(\d+)',
|
||||||
], webpage, 'video_id', default=None)
|
], webpage, 'video_id', default=None)
|
||||||
if not video_id:
|
if not video_id:
|
||||||
player_url = self._html_search_meta([
|
player_url = self._html_search_meta([
|
||||||
|
@ -108,8 +111,10 @@ class FunimationIE(InfoExtractor):
|
||||||
if self._TOKEN:
|
if self._TOKEN:
|
||||||
headers['Authorization'] = 'Token %s' % self._TOKEN
|
headers['Authorization'] = 'Token %s' % self._TOKEN
|
||||||
sources = self._download_json(
|
sources = self._download_json(
|
||||||
'https://prod-api-funimationnow.dadcdigital.com/api/source/catalog/video/%s/signed/' % video_id,
|
'https://www.funimation.com/api/showexperience/%s/' % video_id,
|
||||||
video_id, headers=headers)['items']
|
video_id, headers=headers, query={
|
||||||
|
'pinst_id': ''.join([random.choice(string.digits + string.ascii_letters) for _ in range(8)]),
|
||||||
|
})['items']
|
||||||
except ExtractorError as e:
|
except ExtractorError as e:
|
||||||
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403:
|
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403:
|
||||||
error = self._parse_json(e.cause.read(), video_id)['errors'][0]
|
error = self._parse_json(e.cause.read(), video_id)['errors'][0]
|
||||||
|
|
Loading…
Reference in a new issue