mewforest/vk-music-import

[Проблема] 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 треков просит ввести капчу

Пришлите пожалуйста сюда примеры капч, которые вылезают. Посмотрю, как они хоть теперь выглядят.

Вот свежая капча:
captcha1

Баг исправлен, теперь капча распознается без проблем в версии на Python (не забудьте, установить более свежую vk_api из requirements.txt).

Для тех, кто пользуется обычной версией и не использует Python - ждите, в ближайшее время скомпилирую обновление.

Релиз с исправлением ошибки выпущен!