From 5dd61b95b899b458e46d8bc92ccc82d4bba70356 Mon Sep 17 00:00:00 2001 From: DarkCat09 Date: Sat, 22 Mar 2025 00:14:28 +0400 Subject: [PATCH] fix: vk_id is 0 when not authenticated --- yt_dlp/extractor/vk.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/yt_dlp/extractor/vk.py b/yt_dlp/extractor/vk.py index b420f7a1ed..e68cf7082c 100644 --- a/yt_dlp/extractor/vk.py +++ b/yt_dlp/extractor/vk.py @@ -74,10 +74,17 @@ class VKBaseIE(InfoExtractor): 'Unable to login, incorrect username and/or password', expected=True) def _parse_vk_id(self): - sui = self._get_cookies('https://login.vk.com')['sui'].value + sui = self._get_cookies('https://login.vk.com').get('sui') + if not sui: + return 0 + # example of what `sui` cookie contains: # 123456789%2CSaCxka2wNY7OZKE5QkmtVTxCxg6Ftgb-zVgNXvMVWQH - return re.match(r'^\d+', sui)[0] + mobj = re.match(r'^\d+', sui.value) + if not mobj: + return 0 + + return int(mobj[1]) def _download_payload(self, path, video_id, data, fatal=True): endpoint = f'https://vk.com/{path}.php' @@ -821,7 +828,7 @@ class VKMusicIE(VKBaseIE): 'access_hash': '', # TODO: unnecessary, but it's better to parse from url if access_hash is present 'claim': '0', 'context': '', - 'from_id': self._parse_vk_id(), # TODO: or '0' + 'from_id': self._parse_vk_id(), 'is_loading_all': '1', 'is_preload': '0', 'offset': '0',