diff --git a/yt_dlp/extractor/vk.py b/yt_dlp/extractor/vk.py index 88a278e4f1..2f91fa2a84 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+)|(?:.*\?(?:act|z)=audio_playlist|music/[a-z]+/)(?P-?\d+_\d+)(?:(?:%2F|_|[?&]access_hash=)(?P[0-9a-f]+))?)' + _VALID_URL = r'https?://(?:(?:m|new)\.)?vk\.com/(?:audio(?P-?\d+_\d+)|(?:.*\?(?:act|z)=audio_playlist|music/[a-z]+/)(?P(?P-?\d+)_(?P\d+))(?:(?:%2F|_|[?&]access_hash=)(?P[0-9a-f]+))?)' _TESTS = [ { 'url': 'https://vk.com/audio-2001746599_34746599', @@ -843,7 +843,6 @@ 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) @@ -879,25 +878,25 @@ def _real_extract(self, url): } elif playlist_id: - playlist = self._download_payload('al_audio', playlist_id, { + meta = self._download_payload('al_audio', playlist_id, { 'act': 'load_section', - 'access_hash': access_hash, + 'access_hash': mobj.group('access_hash') or '', 'claim': '0', 'context': '', 'from_id': self._parse_vk_id(), 'is_loading_all': '1', 'is_preload': '0', 'offset': '0', - 'owner_id': '', - 'playlist_id': '', + 'owner_id': mobj.group('pl_oid'), + 'playlist_id': mobj.group('pl_id'), 'ref': '', 'type': 'playlist', - }) + })[0] - meta = self._parse_json(playlist, playlist_id)[0] tracks = meta['list'] entries = [] + for ent in tracks: info = self._parse_track_meta(ent) track_id = info.pop('id')