cp.nvim/scrapers
Barrett Ruth 6fcb5d1bbc
feat(codeforces): implement submit; cache CSES token (#300)
## Problem

Codeforces submit was a stub. CSES submit re-ran the full login flow on
every invocation (~1.5s overhead).

## Solution

**Codeforces**: headless browser submit via StealthySession (same
pattern as AtCoder). Solves Cloudflare Turnstile on login, uploads
source via file input, caches cookies at
`~/.cache/cp-nvim/codeforces-cookies.json` so repeat submits skip login.

**CSES**: persist the API token in credentials via a `credentials`
ndjson event. Subsequent submits validate the cached token with a single
GET before falling back to full login.

Also includes a vimdoc table of contents.
2026-03-05 10:37:39 -05:00
..
__init__.py lol 2025-09-24 21:23:06 -04:00
atcoder.py feat(codeforces): implement submit; cache CSES token (#300) 2026-03-05 10:37:39 -05:00
base.py ci: format 2026-03-03 15:09:41 -05:00
codechef.py feat(codeforces): implement submit; cache CSES token (#300) 2026-03-05 10:37:39 -05:00
codeforces.py feat(codeforces): implement submit; cache CSES token (#300) 2026-03-05 10:37:39 -05:00
cses.py feat(codeforces): implement submit; cache CSES token (#300) 2026-03-05 10:37:39 -05:00
kattis.py feat(codeforces): implement submit; cache CSES token (#300) 2026-03-05 10:37:39 -05:00
language_ids.py feat(atcoder): extract submit helpers; add live status notifications (#294) 2026-03-04 19:27:29 -05:00
models.py feat(scraper): add precision extraction, start_time, and submit support 2026-03-03 15:09:41 -05:00
timeouts.py feat(codeforces): implement submit; cache CSES token (#300) 2026-03-05 10:37:39 -05:00
usaco.py feat(codeforces): implement submit; cache CSES token (#300) 2026-03-05 10:37:39 -05:00