Plan metadata design around a very large library
pauljd/davidson-ci: Davidson CI / quality (push) Failing after 2m0s
pauljd/davidson-ci: Davidson CI / ai-review (push) Successful in 49s

Paul's library is over 100,000 films and about 20,000 shows, which rules
out loading it whole. Records the storage, import and matching approach.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-11-01 18:12:42 +00:00
co-authored by Claude Opus 5.5
parent 4c0c165069
commit e2ec217428
+14
View File
@@ -48,6 +48,20 @@ Documentary versus scripted, and traditional versus CGI, need explicit values in
- **Hardcoded channels:** saved state has fixed slots for `one`, `toonami` and `afterDark`, and only accepts 101 to 103. Adding channel 26 needs a generic channel list with a tested migration.
- **Listed isn't playable:** a catalogue entry only proves a title is listed. Keep separate states for listed, source checked and failed, and recheck when tuning, as Orbit does now.
## Library scale
Paul's library is over 100,000 films and about 20,000 TV shows, as he reported on 1 November 2026. Episode count is unknown and could be far larger. The design has to hold at that size:
- **Storage:** an indexed on-device database, not the saved setup file. Android's built-in SQLite needs no new dependency.
- **Import:** paged in the background, resumable, throttled, and stopped by a rate-limit reply. Films and series first.
- **Episodes:** fetched per series only when a series is approved or needed, not imported up front.
- **Refresh:** changes since the last import, never a full re-read.
- **Matching:** filter with provider queries or the local index, so no screen or schedule step scans the whole library in memory.
- **Review screens:** show a short ranked list, with paging for the rest.
- **Playback checks:** only for titles going onto a channel, never for the whole library.
Real record sizes, box storage and provider limits still need measuring before these numbers are final.
## Recommendation engine design
The engine should behave like a TV programmer who proposes and waits: it suggests from rules it can explain, and nothing reaches a channel until the viewer accepts it. It runs on the box, with no AI or cloud service.