MediaShelf/mediashelf
Jess Hallsworth d12cbc62ee
Stop dropping seasons Plex reports without a parentRatingKey
The first real scan logged 15 "episode has no season; skipped" warnings. They
are Firefly S1 in TV Show Archive: Plex returns those episodes with
grandparentRatingKey and parentIndex set and parentGuid present, but
parentRatingKey null. Requiring parentRatingKey meant the entire season was
silently absent from the report - exactly the kind of quiet omission a reclaim
tool must not have.

The season key is now synthesized from show + season number when Plex omits it,
which is stable across scans. Keep marks are unaffected either way since they
key on GUIDs, not rating keys.

Also drops the multi_part flag from ordinary seasons. A season has one part per
episode, so part_count > 1 is normal there and the badge appeared on every TV
row; it now means what it says - a movie held more than once, or a season with
more files than episodes.

Both cases are in the fake server now, so the suite covers them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GVbG48GAXfCZatcmX123Ra
2026-09-10 14:37:30 +00:00
..
migrations Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
providers Stop dropping seasons Plex reports without a parentRatingKey 2026-09-10 14:37:30 +00:00
static Fix false "Plex fallback" banner during the first scan 2026-09-10 14:30:09 +00:00
templates Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
__init__.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
api.py Fix false "Plex fallback" banner during the first scan 2026-09-10 14:30:09 +00:00
app.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
cli.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
config.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
db.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
ingest.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
keeps.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
queries.py Stop dropping seasons Plex reports without a parentRatingKey 2026-09-10 14:37:30 +00:00
rules.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
scanner.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
scoring.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00
web.py Implement MediaShelf v1 2026-09-07 14:59:03 +00:00