Skip to content

Бесконечный луп при запросе аудио #391

@ruseecz

Description

@ruseecz

При скачивании одной из песен 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, поэтому прошу прощения за миллион правок и бардак в целом))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions