From 6f0c64b148994f096cf7c631dd2721c14fc5fbb8 Mon Sep 17 00:00:00 2001 From: DarkCat09 Date: Sat, 22 Mar 2025 00:28:12 +0400 Subject: [PATCH] feat: parse access hash from url --- yt_dlp/extractor/vk.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/vk.py b/yt_dlp/extractor/vk.py index ae7db78799..0c85725b66 100644 --- a/yt_dlp/extractor/vk.py +++ b/yt_dlp/extractor/vk.py @@ -758,7 +758,7 @@ def _real_extract(self, url): class VKMusicIE(VKBaseIE): IE_NAME = 'vk:music' - _VALID_URL = r'https?://(?:(?:m|new)\.)?vk\.com/(?:audio(?P-?\d+_\d+)|(?:.*\?z=audio_playlist|music/playlist/)(?P-?\d+_\d+))' + _VALID_URL = r'https?://(?:(?:m|new)\.)?vk\.com/(?:audio(?P-?\d+_\d+)|(?:.*\?z=audio_playlist|music/[a-z]+/)(?P-?\d+_\d+)(?:(?:%2F|_)(?P[0-9a-f]+))?)' _TESTS = [ { 'url': 'https://vk.com/audio-2001746599_34746599', @@ -782,6 +782,7 @@ def _real_extract(self, url): mobj = self._match_valid_url(url) track_id = mobj.group('track_id') playlist_id = mobj.group('playlist_id') + access_hash = mobj.group('access_hash') or '' if track_id: webpage = self._download_webpage(url, track_id) @@ -826,7 +827,7 @@ def _real_extract(self, url): elif playlist_id: playlist = self._download_payload('al_audio', playlist_id, { 'act': 'load_section', - 'access_hash': '', # TODO: unnecessary, but it's better to parse from url if access_hash is present + 'access_hash': access_hash, 'claim': '0', 'context': '', 'from_id': self._parse_vk_id(),