Skip to content

Preserve list identities and protect managed imports for 0.42.9 - #10

Merged
OneHotTake merged 4 commits into
mainfrom
fix/mdblist-media-identity
Sep 30, 2026
Merged

OneHotTake merged 4 commits into
mainfrom
fix/mdblist-media-identity

Conversation

@OneHotTake

@OneHotTake OneHotTake commented Sep 30, 2026 •

Copy link
Copy Markdown
Owner

External lists can import television shows as movies because provider media types are discarded or passed through as tv, which the episode importer does not recognize. AniList also treated theatrical films as television. Preserve provider identity and year and return the internal movie/series types before new catalog rows are created.

  • MDBList: retain public-array mediatype/release_year, use grouped movie/show context, and reject contradictory or untyped entries.
  • Trakt: derive type from movie/show wrappers, require a supported type for flat entries, and skip episode/history or contradictory entries.
  • TMDB: normalize TV to series and use its first_air_date; retain V3 untyped movie compatibility without guessing name-only items.
  • AniList: request format; distinguish theatrical MOVIE entries from supported episodic formats, preserving native IDs for enrichment.

The external-list guide explains these contracts, existing-row repair limits and comparisons with Kometa and HomeScreenCompanion. These consumers distinguish identity during conversion or select existing items; ignoring type cannot be copied safely into a new STRM importer.

Generic catalog upserts could also undo a repaired series identity: an incoming movie DTO replaced media type, year and TMDB ID while a missing incoming path preserved the existing series path. Atomically reject movie/episodic conflicts for managed STRM rows and owned-media retirements. Bulk sync skips only conflicting rows, emits warnings, and reports accepted/total counts; same-family anime/series updates retain the established managed destination type. Sparse refreshes preserve known year/TMDB values.

Validation: the synthetic provider audit compiled and reproduced 19 failing cases before the parser fixes. The final 0.42.9 pinned-Emby-ABI build passed all 165 tests and published the DLL; repository checks and whitespace checks pass. Tests include 31 dedicated provider identity cases plus eight real SQLite persistence cases covering single/bulk rejection, preserved blocks/retries/retirement, partial bulk progress, sparse metadata, compatible anime/series updates and unpublished/separate-source intent. No credentialed live-provider requests or playback acceptance tests were performed.

Existing catalog rows are not automatically reclassified or moved. The candidate assembly/plugin metadata is bumped to 0.42.9.0. This PR contains no automatic database migration, production deployment or restart. Existing misclassified rows require a separate backed-up destination and identity repair that preserves memberships, blocks, retry history and owned media.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@OneHotTake OneHotTake changed the title Preserve MDBList media identity during list imports Preserve movie and series identity across external list imports Sep 30, 2026
@OneHotTake OneHotTake changed the title Preserve movie and series identity across external list imports Preserve list identities and protect managed imports for 0.42.9 Sep 30, 2026
@OneHotTake
OneHotTake merged commit ca6a9c4 into main Sep 30, 2026
2 checks passed
@OneHotTake
OneHotTake deleted the fix/mdblist-media-identity branch September 30, 2026 12:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant