[Проблема] Flood control вместо капчи ломает выполнение и кидает vk_api.exceptions.ApiError
zvedenyuk opened this issue · 12 comments
Опишите проблему
Загружает 49 треков и дальше выдаёт ошибку.
Как воспроизвести ошибку
Загрузка из файла tracklist.txt. Попробовал разные плейлисты и доходит ровно до 50.
Технические данные (пожалуйста, заполните следующую информацию):
- ОС macOS
- Содержимое файла настроек (
.env
)
BYPASS_CAPTCHA="1"
SPOTIFY_MODE="0"
REVERSE="1"
STRICT_SEARCH="0"
ADD_TO_LIBRARY="0" - Запускали ли вы готовый релиз (или использовали Python)?
Python
Дополнительная информация
INFO:root:Ищу трек "Я всё решил (Outro)" от исполнителя ОМ. (51 из 265)...
INFO:root:Появилась капча, пытаюсь автоматически её решить...
INFO:root:Текст на капче обнаружен, отправляю решение...
WARNING:root:Не получить трек, ошибка: "[9] Flood control". Жду 10 секунд...
INFO:root:Появилась капча, пытаюсь автоматически её решить...
INFO:root:Текст на капче обнаружен, отправляю решение...
ERROR:root:[9] Flood control
Traceback (most recent call last):
File "/Users/.../Downloads/vk-music-import-main/vk-music-import.py", line 221, in main
response = vk_session.method("audio.search", {"q": f"{artist} - {title}", "count": 3})
File "/usr/local/lib/python3.9/site-packages/vk_api/vk_api.py", line 692, in method
response = self.error_handlers[error.code](error)
File "/Users/.../Downloads/vk-music-import-main/vk-music-import.py", line 62, in captcha_handler
return captcha.try_again(key)
File "/usr/local/lib/python3.9/site-packages/vk_api/exceptions.py", line 157, in try_again
return self.func(*self.args, **self.kwargs)
File "/usr/local/lib/python3.9/site-packages/vk_api/vk_api.py", line 697, in method
raise error
vk_api.exceptions.ApiError: [9] Flood control
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/.../Downloads/vk-music-import-main/vk-music-import.py", line 359, in <module>
main()
File "/Users/.../Downloads/vk-music-import-main/vk-music-import.py", line 225, in main
response = vk_session.method("audio.search", {"q": f"{artist} - {title}", "count": 3})
File "/usr/local/lib/python3.9/site-packages/vk_api/vk_api.py", line 692, in method
response = self.error_handlers[error.code](error)
File "/Users/.../Downloads/vk-music-import-main/vk-music-import.py", line 62, in captcha_handler
return captcha.try_again(key)
File "/usr/local/lib/python3.9/site-packages/vk_api/exceptions.py", line 157, in try_again
return self.func(*self.args, **self.kwargs)
File "/usr/local/lib/python3.9/site-packages/vk_api/vk_api.py", line 697, in method
raise error
vk_api.exceptions.ApiError: [9] Flood control
Нажмите Enter, чтобы завершить работу программы...```
Привет! Кажется, защита в VK срабатывает на количество запросов в секунду. Это что-то новое 🤔
предлагаю перед строчкой с ошибкой:
File "/Users/.../Downloads/vk-music-import-main/vk-music-import.py", line 221, in main
response = vk_session.method("audio.search", {"q": f"{artist} - {title}", "count": 3})
Добавить sleep(1)
. Может так вк даст вам загрузить музыку, и защита от флуда не сработает на вас.
Я вчера добавил там sleep(7)
. В результате дал загрузить 139 треков, потом выдал ту же ошибку.
Такая же ситуация и при запуске .exe приложения, к сожалению
Проблема конкретно в методе audio.search
. Если давать готовые айдишники треков, то без проблем добавляет полторы тысячи треков, правда делит на два плейлиста. Видимо, связано с ограничениями на бесплатное прослушивание музыки.
Фикса/решения ждать? У меня добавляет ровно 45 треков перед ошибкой.
Я вчера добавил там
sleep(7)
. В результате дал загрузить 139 треков, потом выдал ту же ошибку.
В качестве эксперимента, попробуйте изменить client_id для запроса токена (на byt.ly ссылка та же, только сокращённая):
https://oauth.vk.com/oauth/authorize?client_id=6121396&scope=8&redirect_uri=https://oauth.vk.com/blank.html&display=page&response_type=token&revoke=1&slogin_h=23a7bd142d757e24f9.93b0910a902d50e507&__q_hash=fed6a6c326a5673ad33facaf442b3991
Вместо client_id=6121396
попробуйте id от Kate (’client_id=2685278’) или vk.com (’client_id=6287487’).
Есть надежда, что Flood Control не сработает на токены официальных приложений.
Найдено временное решение!
✅ Отключите автоматическое распознавание капчи.
Кажется, дело вовсе не в новых ограничениях, ВК просто додумались усовершенствовать капчу и старая модель для автоматического распознания не срабатывает.
Чтобы выключить автоматическое распознавание капчи и вводить ответы вручную, выключите распознавание капчи в файле config.env: BYPASS_CAPTCHA="0"
.
Найдено временное решение!
✅ Отключите автоматическое распознавание капчи.
Кажется, дело вовсе не в новых ограничениях, ВК просто додумались усовершенствовать капчу и старая модель для автоматического распознания не срабатывает.
Чтобы выключить автоматическое распознавание капчи и вводить ответы вручную, выключите распознавание капчи в файле config.env:
BYPASS_CAPTCHA="0"
.
Так работает без ошибок, спасибо!
Но каждые примерно 40-50 треков просит ввести капчу
Так работает без ошибок, спасибо!\nНо каждые примерно 40-50 треков просит ввести капчу
Пришлите пожалуйста сюда примеры капч, которые вылезают. Посмотрю, как они хоть теперь выглядят.
Баг исправлен, теперь капча распознается без проблем в версии на Python (не забудьте, установить более свежую vk_api
из requirements.txt
).
Для тех, кто пользуется обычной версией и не использует Python - ждите, в ближайшее время скомпилирую обновление.