Context
Audiobook m4b files sometimes have sparse iTunes-style metadata (no narrator, no series, no year). Audnexus is the canonical metadata source used by AudioBookshelf and the broader audiobook self-hosting community. `epignosis` is supposed to use Audnexus for audiobook enrichment.
The reference Python migration script at `~/menos-ops/scratch/migrate-audiobooks-canonical.py` deferred Audnexus enrichment with a TODO and falls back to filename parsing — it flags affected books with `needs_metadata = true` in `audiobook.toml`.
What
- Verify the Audnexus provider is wired in `epignosis` for audiobook enrichment
- Add tests for the lookup paths:
- Lookup by ASIN (when available)
- Lookup by title + author (when ASIN missing)
- Wire it into the audiobook import path so that when m4b atoms are sparse (missing year, narrator, series), `epignosis::resolve_identity` and `epignosis::enrich` reach out to Audnexus
- Cache Audnexus responses per-provider per the existing epignosis caching pattern
Files
- `crates/epignosis/src/providers/` — verify or add Audnexus provider
- Cache layer
- Tests
Acceptance
Why this matters
Once landed, the `needs_metadata = true` flag in legacy migrated audiobook sidecars can be swept by re-running `harmonia migrate audiobooks` (issue: `harmonia migrate subcommand`) and the Audnexus calls will populate the missing fields automatically.
Reference
- Audnexus API: https://api.audnex.us/
- Reference fallback implementation: `~/menos-ops/scratch/migrate-audiobooks-canonical.py` (filename-only fallback with TODO comment for Audnexus)
Context
Audiobook m4b files sometimes have sparse iTunes-style metadata (no narrator, no series, no year). Audnexus is the canonical metadata source used by AudioBookshelf and the broader audiobook self-hosting community. `epignosis` is supposed to use Audnexus for audiobook enrichment.
The reference Python migration script at `~/menos-ops/scratch/migrate-audiobooks-canonical.py` deferred Audnexus enrichment with a TODO and falls back to filename parsing — it flags affected books with `needs_metadata = true` in `audiobook.toml`.
What
Files
Acceptance
Why this matters
Once landed, the `needs_metadata = true` flag in legacy migrated audiobook sidecars can be swept by re-running `harmonia migrate audiobooks` (issue: `harmonia migrate subcommand`) and the Audnexus calls will populate the missing fields automatically.
Reference