Что происходит
При логине на аккаунт с включённой 2FA без password=... в MaxApi() библиотека печатает QR-код и падает:
MapperApiError: password is required to login in account with 2FA.
Сообщение вводит в заблуждение: звучит как ошибка библиотеки/сервера, хотя по смыслу это обычный сценарий «аккаунт защищён паролем — введите его». Из текста не ясно, кто должен передать пароль и как. После ошибки срабатывает RestartMapperError("Failed to login") и цикл авторизации повторяется с новой печатью QR.
Предложение
Запрашивать пароль 2FA интерактивно — так же, как это уже сделано для подтверждения QR-логина:
- Сервер вернул
password_challenge, а MaxApi(password=...) не задан → показать в терминале приглашение ввода пароля;
- Введённый пароль уходит в
resolve_two_factor(track_id, password);
- Интерактивный режим имеет смысл включать только при активной TTY-сессии; при её отсутствии — понятная ошибка вида «account has 2FA enabled: pass MaxApi(password=...) or run interactively» вместо текущего текста.
Это убирает необходимость хардкодить пароль в коде и делает первый запуск на 2FA-аккаунте таким же простым, как сканирование QR.
Что происходит
При логине на аккаунт с включённой 2FA без
password=...вMaxApi()библиотека печатает QR-код и падает:Сообщение вводит в заблуждение: звучит как ошибка библиотеки/сервера, хотя по смыслу это обычный сценарий «аккаунт защищён паролем — введите его». Из текста не ясно, кто должен передать пароль и как. После ошибки срабатывает
RestartMapperError("Failed to login")и цикл авторизации повторяется с новой печатью QR.Предложение
Запрашивать пароль 2FA интерактивно — так же, как это уже сделано для подтверждения QR-логина:
password_challenge, аMaxApi(password=...)не задан → показать в терминале приглашение ввода пароля;resolve_two_factor(track_id, password);Это убирает необходимость хардкодить пароль в коде и делает первый запуск на 2FA-аккаунте таким же простым, как сканирование QR.