mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-07-20 12:18:29 +00:00
smuggle track_info in case it's not included on the track page
This commit is contained in:
parent
d57a0b5aa7
commit
349b87f563
@ -11,10 +11,12 @@
|
|||||||
float_or_none,
|
float_or_none,
|
||||||
int_or_none,
|
int_or_none,
|
||||||
parse_filesize,
|
parse_filesize,
|
||||||
|
smuggle_url,
|
||||||
str_or_none,
|
str_or_none,
|
||||||
try_get,
|
try_get,
|
||||||
unified_strdate,
|
unified_strdate,
|
||||||
unified_timestamp,
|
unified_timestamp,
|
||||||
|
unsmuggle_url,
|
||||||
update_url_query,
|
update_url_query,
|
||||||
url_or_none,
|
url_or_none,
|
||||||
urljoin,
|
urljoin,
|
||||||
@ -127,6 +129,8 @@ def _extract_data_attr(self, webpage, video_id, attr='tralbum', fatal=True):
|
|||||||
attr + ' data', group=2), video_id, fatal=fatal)
|
attr + ' data', group=2), video_id, fatal=fatal)
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
|
url, smuggled_track_info = unsmuggle_url(url, None)
|
||||||
|
|
||||||
title, uploader = self._match_valid_url(url).group('id', 'uploader')
|
title, uploader = self._match_valid_url(url).group('id', 'uploader')
|
||||||
webpage = self._download_webpage(url, title)
|
webpage = self._download_webpage(url, title)
|
||||||
tralbum = self._extract_data_attr(webpage, title)
|
tralbum = self._extract_data_attr(webpage, title)
|
||||||
@ -138,7 +142,7 @@ def _real_extract(self, url):
|
|||||||
duration = None
|
duration = None
|
||||||
|
|
||||||
formats = []
|
formats = []
|
||||||
track_info = try_get(tralbum, lambda x: x['trackinfo'][0], dict)
|
track_info = try_get(tralbum, lambda x: x['trackinfo'][0], dict) or smuggled_track_info
|
||||||
if track_info:
|
if track_info:
|
||||||
file_ = track_info.get('file')
|
file_ = track_info.get('file')
|
||||||
if isinstance(file_, dict):
|
if isinstance(file_, dict):
|
||||||
@ -366,7 +370,7 @@ def _real_extract(self, url):
|
|||||||
# Only tracks with duration info have songs
|
# Only tracks with duration info have songs
|
||||||
entries = [
|
entries = [
|
||||||
self.url_result(
|
self.url_result(
|
||||||
urljoin(url, t['title_link']), BandcampIE.ie_key(),
|
smuggle_url(urljoin(url, t['title_link']), t), BandcampIE.ie_key(),
|
||||||
str_or_none(t.get('track_id') or t.get('id')), t.get('title'))
|
str_or_none(t.get('track_id') or t.get('id')), t.get('title'))
|
||||||
for t in track_info
|
for t in track_info
|
||||||
if t.get('duration')]
|
if t.get('duration')]
|
||||||
|
Loading…
Reference in New Issue
Block a user