iamnbutler/shelfgoblinPublic

Shelf Goblin โ€” discover LitRPG audiobooks, follow series, and track your library.

Add Audible fetcher module with database storage

Implements the Audible fetcher (#25) that replaces static JSON output
with proper database storage. Includes:

- Audible fetcher with genre and series search strategies
- SQLite database schema (books, book_sources, book_subgenres, fetch_runs, search_cursors)
- Shared HTTP client with timeouts, retries, and rate limiting
- Incremental fetch mode with search cursor tracking
- Search terms externalized to config file
- Rating data extracted and stored (addresses #21)
- No content filtering at fetch time (per #3 discussion)
- CLI: `npm run db:fetch -- --source=audible --year=2026`

Closes #25

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
C4TATasks Agent and Claude Opus 4.6 authored committed by iamnbutler
8240b02Patch
Parente906622
7 files changed+550-6
StackedSplit
.gitignore+5 โˆ’0
package-lock.json+7 โˆ’4
package.json+1 โˆ’1
scripts/backend/db/index.ts+164 โˆ’0
scripts/backend/fetchers/audible.ts+359 โˆ’0
scripts/backend/fetchers/types.ts+12 โˆ’0
tsconfig.backend.json+2 โˆ’1