mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-08-16 09:28:28 +00:00
[ie/9now.com.au] Refactor extractor
Authored by: bashonly
This commit is contained in:
parent
c840feeba1
commit
7f91e4df8c
@ -1,6 +1,3 @@
|
|||||||
import json
|
|
||||||
import re
|
|
||||||
|
|
||||||
from .brightcove import BrightcoveNewIE
|
from .brightcove import BrightcoveNewIE
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
@ -11,7 +8,12 @@
|
|||||||
str_or_none,
|
str_or_none,
|
||||||
url_or_none,
|
url_or_none,
|
||||||
)
|
)
|
||||||
from ..utils.traversal import require, traverse_obj, value
|
from ..utils.traversal import (
|
||||||
|
get_first,
|
||||||
|
require,
|
||||||
|
traverse_obj,
|
||||||
|
value,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NineNowIE(InfoExtractor):
|
class NineNowIE(InfoExtractor):
|
||||||
@ -101,20 +103,11 @@ class NineNowIE(InfoExtractor):
|
|||||||
}]
|
}]
|
||||||
BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/4460760524001/default_default/index.html?videoId={}'
|
BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/4460760524001/default_default/index.html?videoId={}'
|
||||||
|
|
||||||
# XXX: For parsing next.js v15+ data; see also yt_dlp.extractor.francetv and yt_dlp.extractor.goplay
|
|
||||||
def _find_json(self, s):
|
|
||||||
return self._search_json(
|
|
||||||
r'\w+\s*:\s*', s, 'next js data', None, contains_pattern=r'\[(?s:.+)\]', default=None)
|
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
display_id, video_type = self._match_valid_url(url).group('id', 'type')
|
display_id, video_type = self._match_valid_url(url).group('id', 'type')
|
||||||
webpage = self._download_webpage(url, display_id)
|
webpage = self._download_webpage(url, display_id)
|
||||||
|
|
||||||
common_data = traverse_obj(
|
common_data = get_first(self._search_nextjs_v13_data(webpage, display_id), ('payload', {dict}))
|
||||||
re.findall(r'<script[^>]*>\s*self\.__next_f\.push\(\s*(\[.+?\])\s*\);?\s*</script>', webpage),
|
|
||||||
(..., {json.loads}, ..., {self._find_json},
|
|
||||||
lambda _, v: v['payload'][video_type]['slug'] == display_id,
|
|
||||||
'payload', any, {require('video data')}))
|
|
||||||
|
|
||||||
if traverse_obj(common_data, (video_type, 'video', 'drm', {bool})):
|
if traverse_obj(common_data, (video_type, 'video', 'drm', {bool})):
|
||||||
self.report_drm(display_id)
|
self.report_drm(display_id)
|
||||||
|
Loading…
Reference in New Issue
Block a user