Cover-fetch overhaul (#30)
Fixes the silent "No Result(s) found!" UX for English-language metadata
searches. Live diagnosis on the v4.0.8 instance for Animal Farm george orwell
returned zero candidates from any provider; this release brings that to
82 candidates across 9 providers.
What's new
- Open Library as a first-class metadata provider — free, no key, auto-registers.
- Google Books API key support (
config_google_books_api_key) — lifts the
per-IP anonymous quota of 1k req/day. Free key at console.cloud.google.com.
Configure under Admin → Configuration → Feature Configuration. - Per-provider status in
/metadata/search— modal now shows a one-line
status per provider (✓ 10 results,⏱ rate limited,🔒 missing key,
⛔ blocked (Amazon 503)) withduration_ms. - In-modal API Keys panel — "🔒 API Keys" toggle next to provider list.
Admins can paste a Hardcover / Google Books / Goodreads key and save without
leaving the Fetch Metadata dialog. CWA_METADATA_DEBUG=1env knob — bumps every metadata-provider logger
to DEBUG without touching the global level.
Upgrade
docker compose pull && docker compose up -dDB migration is automatic (column auto-add path in cps/config_sql.py).
No thumbnail-cache refresh needed for this release.
Out of scope (deliberately deferred)
- Amazon Product Advertising API (paid + restricted).
- ISBNdb (paid).
- Goodreads API (discontinued in 2020 by Amazon).
- DNB cover SSL-EOF errors and a
NoneType.languageparse bug — separate
follow-up PR.
Full diff: v4.0.8...v4.0.9