From 45ca66f40d2bd0aa8c8a3aeecf59bc8b83147320 Mon Sep 17 00:00:00 2001 From: DarkCat09 Date: Fri, 4 Apr 2025 17:54:57 +0400 Subject: [PATCH] style: return info dict instead of dynamically filling --- yt_dlp/extractor/vk.py | 55 +++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/yt_dlp/extractor/vk.py b/yt_dlp/extractor/vk.py index a61d3b476..4f1679737 100644 --- a/yt_dlp/extractor/vk.py +++ b/yt_dlp/extractor/vk.py @@ -792,40 +792,39 @@ def _unmask_url(self, mask_url, vk_id): def _parse_track_meta(self, meta, track_id=None): len_ = len(meta) - info = {} - info['id'] = f'{meta[1]}_{meta[0]}' \ - if len_ >= 2 and meta[1] and meta[0] \ - else track_id + # track title + title = unescapeHTML(meta[3]) if len_ >= 3 else None + # artists in one string, may include "feat." + artist = unescapeHTML(meta[4]) if len_ >= 4 else None - title = unescapeHTML(meta[3]) if len_ >= 3 else None # TODO: fallback - artist = unescapeHTML(meta[4]) if len_ >= 4 else None # artists in one string, may include "feat." - info['title'] = join_nonempty(artist, title, delim=' - ') - info['track'] = title - info['uploader'] = artist + return { + 'id': (f'{meta[1]}_{meta[0]}' + if len_ >= 2 and meta[1] and meta[0] + else track_id), - # artists as list - info['artists'] = ( - # not htmlescaped unlike meta[4] - traverse_obj((*meta[17], *meta[18]), (..., 'name')) - if len_ >= 18 else None - ) or [artist] + 'title': join_nonempty(artist, title, delim=' - '), + 'track': title, + 'uploader': artist, - info['duration'] = int_or_none(meta[5]) if len_ >= 5 else None - info['thumbnails'] = [{'url': meta[14]}] if len_ >= 14 else [] + # ['Main Artist', 'Feat. Artist'] + 'artists': traverse_obj( + (*meta[17], *meta[18]) if len_ >= 18 else None, + (..., 'name'), default=[artist]), - # meta[30] is 2 bits - # most significant: isExplicit - # least significant: isForeignAgent - # i. e. - # 00 = safe - # 01 = marked by RKN as "foreign agent" - # 10 = explicit lyrics - # 11 = both E lyrics and "foreign agent" - if len_ >= 30 and meta[30]: - info['age_limit'] = 18 + 'duration': int_or_none(meta[5]) if len_ >= 5 else None, + 'thumbnails': [{'url': meta[14]}] if len_ >= 14 else [], - return info + # meta[30] is 2 bits + # most significant: isExplicit + # least significant: isForeignAgent + # i. e. + # 00 = safe + # 01 = marked by RKN as "foreign agent" + # 10 = explicit lyrics + # 11 = both E lyrics and "foreign agent" + 'age_limit': 18 if len_ >= 30 and meta[30] else None, + } def _raise_if_blocked(self, meta, track_id): reason = traverse_obj(