fix: replace curl_cffi with scrapling in codeforces metadata (#334)

## Problem

`codeforces.py` used `curl_cffi` to bypass Cloudflare when fetching
contest problem HTML, making it unavailable in the nix python env and
requiring an extra dependency across `pyproject.toml` and `flake.nix`.

## Solution

Rewrite `_fetch_problems_html` to use scrapling `StealthySession` with
`solve_cloudflare=True`, matching the existing CF submit pattern. Extend
`needs_browser` in `scraper.lua` to route CF `metadata` and `tests`
through the FHS env on NixOS. Remove `curl-cffi` from `pyproject.toml`,
`flake.nix`, and test mocks.
This commit is contained in:
Barrett Ruth 2026-03-06 13:25:44 -05:00 committed by GitHub
parent 6a3d2fe4f8
commit 0b40e0f33e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 32 additions and 36 deletions

View file

@ -44,7 +44,9 @@ local function run_scraper(platform, subcommand, args, opts)
return { success = false, error = msg }
end
local needs_browser = subcommand == 'submit' or subcommand == 'login'
local needs_browser = subcommand == 'submit'
or subcommand == 'login'
or (platform == 'codeforces' and (subcommand == 'metadata' or subcommand == 'tests'))
if needs_browser then
utils.setup_nix_submit_env()