-
Notifications
You must be signed in to change notification settings - Fork 325
Description
При скачивании одной из песен API ушло в бесконечный цикл отправки запросов так как в результате запроса через search/search_iter возвращалась одна и та же страница с одним и тем же результатом. В результате поиске возвращает всего одну песню если руками с Фронта искать.
Для вопроивездения бага достаточно просто отправить запрос на поиск, дополнительные параметры не обязательны, даже при использовании параметра count=1 АПИ уйдет в бесконеный луп.
Я произвел небольшой анализ, в меру своих сил (я нубас) и обнаружил что для данной песни возвращается json_response['payload'][1][1]['playlists'][0]['list'] состоящий всегда из одной записи в каждой итерации While в search_iter, этот лист передается в scrap_id где вытягивается аудио хэш audio_hashes = track[13].split("/") и вот тут то и настает проблема, аудиохэш для этой песни выглядит следующим образом: //59c9572782dd2cee7f//// после чего он парсится и возвращается обратно ID для нового запроса и подтягивания самого трэка, но как видно из данных, парсить тут особо нечего в отличии от песен для которых результат возвращается корректно: 'e48382ebae10064d39//d782e2777bd76fc29c///241ef178e4d22d6174/'. Я исправил у себя эту ошибку, но возможно такая проблема возникнет не только у меня.
Проблема еще в том что список айди которые парсит функция scrap_ids передается в генератор tracks = scrap_tracks(...) после чего стоит проверка if not tracks однако tracks возвращает объект функции генератора, поэтому всегда является True даже если генератор пустой, так как в генератор передается пустой список ID из scrap_ids
Я пока что (на более детальное продумывание фикса не было пока времени) исправил проблему тем что если функция scrap_ids возвращает пустой список, я выхожу из лупа.
Запрос для поиска для воспроивездения бага: Semilla Pachakuti
Окружение
vk_api: 11.9.1
API: версию Апи я нигде явно не указываю так как использую вк-апи только для описка музыки, соответственно только несоклько методов и инициализацию сессии
Пример
Для воспроизведения достаточно вызвать функцию:
vk_audio.search(q="Semilla Pachakuti", count=1)
P.S. это мое первое issue, поэтому прошу прощения за миллион правок и бардак в целом))