fix(scrapers): bad credentials detection and error message cleanup (#367)
## Problem Wrong credentials produced garbled error messages (`"login failed: Login failed: bad_credentials"`) and stale credentials remained cached after failure, causing silent re-use on the next invocation. ## Solution Standardize all scrapers to emit `"bad_credentials"` as a plain error code, mapped to a human-readable string via `LOGIN_ERRORS` in `constants.lua`. Fix `credentials.lua` to clear cached credentials on failure in both the fresh-prompt and re-prompt paths. For AtCoder and Codeforces, replace `wait_for_url` with `wait_for_function` to detect the login error element immediately rather than sitting the full 10s navigation timeout. Add "Remember me" checkbox on Codeforces login.
This commit is contained in:
parent
573b335646
commit
771dbc7753
9 changed files with 67 additions and 40 deletions
|
|
@ -439,7 +439,7 @@ class USACOScraper(BaseScraper):
|
|||
except Exception as e:
|
||||
return self._submit_error(f"Login failed: {e}")
|
||||
if not ok:
|
||||
return self._submit_error("Login failed (bad credentials?)")
|
||||
return self._submit_error("bad_credentials")
|
||||
await _save_usaco_cookies(client)
|
||||
else:
|
||||
print(json.dumps({"status": "logging_in"}), flush=True)
|
||||
|
|
@ -448,7 +448,7 @@ class USACOScraper(BaseScraper):
|
|||
except Exception as e:
|
||||
return self._submit_error(f"Login failed: {e}")
|
||||
if not ok:
|
||||
return self._submit_error("Login failed (bad credentials?)")
|
||||
return self._submit_error("bad_credentials")
|
||||
await _save_usaco_cookies(client)
|
||||
|
||||
result = await self._do_submit(client, problem_id, language_id, source)
|
||||
|
|
@ -463,7 +463,7 @@ class USACOScraper(BaseScraper):
|
|||
except Exception as e:
|
||||
return self._submit_error(f"Login failed: {e}")
|
||||
if not ok:
|
||||
return self._submit_error("Login failed (bad credentials?)")
|
||||
return self._submit_error("bad_credentials")
|
||||
await _save_usaco_cookies(client)
|
||||
|
||||
return await self._do_submit(client, problem_id, language_id, source)
|
||||
|
|
@ -543,7 +543,7 @@ class USACOScraper(BaseScraper):
|
|||
return self._login_error(f"Login request failed: {e}")
|
||||
|
||||
if not ok:
|
||||
return self._login_error("Login failed (bad credentials?)")
|
||||
return self._login_error("bad_credentials")
|
||||
|
||||
await _save_usaco_cookies(client)
|
||||
return LoginResult(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue