An extra or a stacked part is not given its owner's ratings, genres and studios #247

Closed
opened 2026-10-11 11:49:00 +02:00 by Claude · 1 comment
Collaborator

Found reviewing #244. Parental filter: review required.

Upstream's BaseItem.RefreshMetadataForOwnedItem (BaseItem.cs ~2796-2862) copies Genres, Studios, ProductionLocations, CommunityRating, CriticRating, Overview, OfficialRating, CustomRating and the inherited dates from an owner to the item it owns when copyTitleMetadata is true, and saves when a value differs. It runs for extras (BaseItem.cs ~1687) and stacked additional parts (Video.cs ~552), not for local alternate versions (Video.cs ~566 passes false).

The port has no such copy; the scan only sets the owner (crates/ephyra-app/src/scan, owned_by). A part or an extra of a film whose rating or custom rating restricts it is therefore scored from its own (usually empty) rating, and a NULL score passes the max-rating filter.

Needs a cross-row step after owner and owned are both written, and a rescore of the owned row. Not measurable on the current fixture: the reference snapshot has one owned row, and both it and its owner have empty fields — the library-kinds or enriched tree needs a rated film with an extra and a stacked part first.

Found reviewing #244. Parental filter: review required. Upstream's `BaseItem.RefreshMetadataForOwnedItem` (`BaseItem.cs` ~2796-2862) copies Genres, Studios, ProductionLocations, CommunityRating, CriticRating, Overview, **OfficialRating**, **CustomRating** and the inherited dates from an owner to the item it owns when `copyTitleMetadata` is true, and saves when a value differs. It runs for extras (`BaseItem.cs` ~1687) and stacked additional parts (`Video.cs` ~552), not for local alternate versions (`Video.cs` ~566 passes false). The port has no such copy; the scan only sets the owner (`crates/ephyra-app/src/scan`, `owned_by`). A part or an extra of a film whose rating or custom rating restricts it is therefore scored from its own (usually empty) rating, and a NULL score passes the max-rating filter. Needs a cross-row step after owner and owned are both written, and a rescore of the owned row. Not measurable on the current fixture: the reference snapshot has one owned row, and both it and its owner have empty fields — the library-kinds or enriched tree needs a rated film with an extra and a stacked part first.
Author
Collaborator

Landed for stacked parts in a2877406 and d35131b7: a film hands OfficialRating, CustomRating, genres, studios, production locations, community and critic rating, overview and its dates to the parts it lists, one refresh behind as upstream's call order has it; a part written without its film takes the film's stored values, so a part added later or rewritten alone is not left unrated (the review's two findings, with a test through the real scan across a batch boundary). Alternate versions are not given the copy. The score follows through the one derivation and the refill agrees. Rests on reading: the one-refresh lag — no fixture has a rated owner. Extras are filed separately: the scan does not file them at all.

Landed for stacked parts in a2877406 and d35131b7: a film hands OfficialRating, CustomRating, genres, studios, production locations, community and critic rating, overview and its dates to the parts it lists, one refresh behind as upstream's call order has it; a part written without its film takes the film's stored values, so a part added later or rewritten alone is not left unrated (the review's two findings, with a test through the real scan across a batch boundary). Alternate versions are not given the copy. The score follows through the one derivation and the refill agrees. Rests on reading: the one-refresh lag — no fixture has a rated owner. Extras are filed separately: the scan does not file them at all.
Sign in to join this conversation.
No description provided.