1
0
mirror of https://github.com/yt-dlp/yt-dlp.git synced 2025-06-28 01:18:30 +00:00

fix: url_or_none for thumbnails

This commit is contained in:
DarkCat09 2025-04-04 18:27:43 +04:00
parent 96e5139195
commit da6fd0d32b
No known key found for this signature in database

View File

@ -798,6 +798,9 @@ def _parse_track_meta(self, meta, track_id=None):
# artists in one string, may include "feat." # artists in one string, may include "feat."
artist = unescapeHTML(meta[4]) if len_ >= 4 else None artist = unescapeHTML(meta[4]) if len_ >= 4 else None
# album cover art url
thumbnail = url_or_none(meta[14] if len_ >= 14 else None)
return { return {
'id': (f'{meta[1]}_{meta[0]}' 'id': (f'{meta[1]}_{meta[0]}'
if len_ >= 2 and meta[1] and meta[0] if len_ >= 2 and meta[1] and meta[0]
@ -813,7 +816,7 @@ def _parse_track_meta(self, meta, track_id=None):
(..., 'name'), default=[artist]), (..., 'name'), default=[artist]),
'duration': int_or_none(meta[5]) if len_ >= 5 else None, 'duration': int_or_none(meta[5]) if len_ >= 5 else None,
'thumbnails': [{'url': meta[14]}] if len_ >= 14 else [], 'thumbnails': [{'url': thumbnail}] if thumbnail else [],
# meta[30] is 2 bits # meta[30] is 2 bits
# most significant: isExplicit # most significant: isExplicit
@ -906,7 +909,6 @@ class VKMusicTrackIE(VKMusicBaseIE):
} }
}, },
{ {
'note': 'meta is AudioPlayerBlock__root[data-exec], no artists in 17/18',
'url': 'https://vk.com/audio-26549346_456239443_59159cef5d080f5450', 'url': 'https://vk.com/audio-26549346_456239443_59159cef5d080f5450',
'info_dict': { 'info_dict': {
'id': '-26549346_456239443', 'id': '-26549346_456239443',
@ -916,7 +918,6 @@ class VKMusicTrackIE(VKMusicBaseIE):
'uploader': 'Fairie\'s Death Waltz', 'uploader': 'Fairie\'s Death Waltz',
'artists': ['Fairie\'s Death Waltz'], 'artists': ['Fairie\'s Death Waltz'],
'duration': 349, 'duration': 349,
'thumbnail': '', # TODO: skip incorrect URLs
'age_limit': 0, 'age_limit': 0,
}, },
'params': { 'params': {
@ -1094,14 +1095,17 @@ def _real_extract(self, url):
entries.append(self.url_result( entries.append(self.url_result(
audio_url, VKMusicTrackIE, track_id, title, **info)) audio_url, VKMusicTrackIE, track_id, title, **info))
title = unescapeHTML(meta.get('title')) # TODO: fallback title = unescapeHTML(meta.get('title'))
artist = unescapeHTML(meta.get('authorName')) artist = unescapeHTML(meta.get('authorName'))
genre, year = self._search_regex( genre, year = self._search_regex(
r'^([^<]+)<\s*span[^>]*>[^<]*</\s*span\s*>(\d+)$', r'^([^<]+)<\s*span[^>]*>[^<]*</\s*span\s*>(\d+)$',
meta.get('infoLine1'), 'genre and release year', meta.get('infoLine1'), 'genre and release year',
default=(None, None), fatal=False, group=(1, 2)) default=(None, None), fatal=False, group=(1, 2))
is_album = year is not None is_album = year is not None
thumbnail = url_or_none(meta.get('coverUrl'))
return self.playlist_result( return self.playlist_result(
entries, playlist_id, entries, playlist_id,
join_nonempty(artist, title, delim=' - ') if is_album else title, join_nonempty(artist, title, delim=' - ') if is_album else title,
@ -1109,7 +1113,7 @@ def _real_extract(self, url):
album=title if is_album else None, album=title if is_album else None,
uploader=artist, uploader=artist,
artists=[artist] if is_album else None, artists=[artist] if is_album else None,
thumbnails=traverse_obj(meta, ({'url': 'coverUrl'}, {lambda obj: [obj]})), thumbnails=[{'url': thumbnail}] if thumbnail else [],
genres=[unescapeHTML(genre)] if genre else None, genres=[unescapeHTML(genre)] if genre else None,
release_year=int_or_none(year), release_year=int_or_none(year),
modified_timestamp=int_or_none(meta.get('lastUpdated')), modified_timestamp=int_or_none(meta.get('lastUpdated')),