mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-16 21:33:19 +00:00
[4tube] Try extracting sources from the webpage before fetching player.js (Closes #7103)
This commit is contained in:
parent
c677e49bd1
commit
4356d907c1
|
@ -68,16 +68,21 @@ def _real_extract(self, url):
|
||||||
webpage, 'like count', fatal=False))
|
webpage, 'like count', fatal=False))
|
||||||
duration = parse_duration(self._html_search_meta('duration', webpage))
|
duration = parse_duration(self._html_search_meta('duration', webpage))
|
||||||
|
|
||||||
|
media_id = self._search_regex(
|
||||||
|
r'<button[^>]+data-id=(["\'])(?P<id>\d+)\1[^>]+data-quality=', webpage,
|
||||||
|
'media id', default=None, group='id')
|
||||||
|
sources = [
|
||||||
|
quality
|
||||||
|
for _, quality in re.findall(r'<button[^>]+data-quality=(["\'])(.+?)\1', webpage)]
|
||||||
|
if not (media_id and sources):
|
||||||
player_js = self._download_webpage(
|
player_js = self._download_webpage(
|
||||||
self._search_regex(
|
self._search_regex(
|
||||||
r'<script[^>]id=(["\'])playerembed\1[^>]+src=(["\'])(?P<url>.+?)\2',
|
r'<script[^>]id=(["\'])playerembed\1[^>]+src=(["\'])(?P<url>.+?)\2',
|
||||||
webpage, 'player JS', group='url'),
|
webpage, 'player JS', group='url'),
|
||||||
video_id, 'Downloading player JS')
|
video_id, 'Downloading player JS')
|
||||||
|
|
||||||
params_js = self._search_regex(
|
params_js = self._search_regex(
|
||||||
r'\$\.ajax\(url,\ opts\);\s*\}\s*\}\)\(([0-9,\[\] ]+)\)',
|
r'\$\.ajax\(url,\ opts\);\s*\}\s*\}\)\(([0-9,\[\] ]+)\)',
|
||||||
player_js, 'initialization parameters'
|
player_js, 'initialization parameters')
|
||||||
)
|
|
||||||
params = self._parse_json('[%s]' % params_js, video_id)
|
params = self._parse_json('[%s]' % params_js, video_id)
|
||||||
media_id = params[0]
|
media_id = params[0]
|
||||||
sources = ['%s' % p for p in params[2]]
|
sources = ['%s' % p for p in params[2]]
|
||||||
|
|
Loading…
Reference in a new issue