A person has no biography, and a box set takes nothing from TMDb #107
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two TMDb providers that are not the TV set and not the movie one.
TmdbPersonProvider+TmdbPersonImageProvider. M11 filed the shape of this already:PeopleValidationTaskruns, names everyone who wants a biography, and then asks nobody, because no provider here answers about a person. A person page therefore renders a name and a photograph and no text. The portraits we do have come off the film's own credits response rather than from a person lookup, so a person nothing has filmed under our fixture has no picture either.TmdbBoxSetProvider+TmdbBoxSetImageProvider. A collection created through/Collectionsgets its name and nothing else. Upstream looks the set up — a film'sbelongs_to_collectionis already parsed and stored here since M10 — and fills the overview and the artwork.Both are small once the TV work has generalized the client past
movie().Where to start
Person.
MediaBrowser.Providers/Plugins/Tmdb/People/{TmdbPersonProvider,TmdbPersonImageProvider}.cs.The consumer already exists and is idle: M11 built
PeopleValidationTask, whichrefuses to run beside a pass, names everyone missing a
Primaryor anOverview, and then asks nobody. Wiring a person provider into it is the wholefeature. Note what portraits we have today come off a film's own credits
response rather than from a person lookup, so a person nobody has filmed with
has no picture either.
Box set.
MediaBrowser.Providers/Plugins/Tmdb/BoxSets/. A film'sbelongs_to_collectionis already parsed and stored here since M10, so the idis in hand; what is missing is the lookup that turns it into an overview and
artwork on the collection row.
Both are small once #106 has generalized the client past
movie()— do themafter it, not before.
How to know it is done
A person in the enriched fixture carries the biography upstream stored, and a
box set carries the overview and the pictures upstream stored, both measured
against the answer key rows and both compared on bytes for the artwork.
House rules
CLAUDE.mdis the short version and these are the parts that bite: tests rununder
cargo nextest; upstream's source is the checkout inupstream/at thepin (
v12.0-rc5,6d501ba4) and not the clone beside the repository;generated files are regenerated rather than edited; a comment says what the code
does, not how it got there; and
Dnreferences stay out of code and comments.ARCHITECTURE.mddecides which crate a thing goes in and which dependency edgesare illegal,
DECISIONS.mdsays why a rule exists.The reference pair is
cargo xtask reference up(andreference provision,which is idempotent); a run is
cargo run -p jellyfin-harness -- replay --upstream URL --ours URL --scenario FILE --out DIR,with
diff-dbfor the two databases.crates/jellyfin-harness/README.mdsayswhat a diff means and what an ignore entry has to carry — every entry needs a
reason and an expiry milestone, and an adds-only history is the smell the risk
table names.
Landed on
mainwith batch E (6c9c399..d83f1ca).Measured the three ways this issue asks for: the cassette regenerated beside
the answer key, an offline chain test against the rows upstream wrote, and
artwork compared on the digest rather than on dimensions. The recording is now
crates/jellyfin-app/corpus/fetched.json— one file for all four databases,argued in D35.
A review round ran over the batch. Seven findings were fixed in
d83f1ca; whatsurvived is filed as #154, #155 and #156.