diff --git a/README.md b/README.md index cbac1fd..7005cf4 100644 --- a/README.md +++ b/README.md @@ -351,3 +351,4 @@ Le script lit `data/intermediate/minifigs_by_set.csv`, `data/intermediate/sets_e - `data/intermediate/minifig_character_sets.csv` : apparitions des personnages avec set, identifiant de set, année et fig_num. - `figures/step32/minifig_characters/{personnage}.png` : frise horizontale par personnage, composée des visuels de minifigs dans l’ordre chronologique, annotés avec l’année et le numéro de set. Les minifigs dont l’image n’est pas disponible sont remplacées par un rectangle neutre pour matérialiser le manque. +- Les étiquettes affichent aussi l’identifiant de la minifig (`fig-*`) et un astérisque à côté du set (`set_num*`) lorsqu’il est présent dans la collection. diff --git a/figures/step32/minifig_characters/Alan_Grant.png b/figures/step32/minifig_characters/Alan_Grant.png index 45bcb73..93b97f3 100644 Binary files a/figures/step32/minifig_characters/Alan_Grant.png and b/figures/step32/minifig_characters/Alan_Grant.png differ diff --git a/figures/step32/minifig_characters/Allison_Miles.png b/figures/step32/minifig_characters/Allison_Miles.png index 8e7b367..68e7204 100644 Binary files a/figures/step32/minifig_characters/Allison_Miles.png and b/figures/step32/minifig_characters/Allison_Miles.png differ diff --git a/figures/step32/minifig_characters/Atwater.png b/figures/step32/minifig_characters/Atwater.png index 1228989..41e0622 100644 Binary files a/figures/step32/minifig_characters/Atwater.png and b/figures/step32/minifig_characters/Atwater.png differ diff --git a/figures/step32/minifig_characters/Barry.png b/figures/step32/minifig_characters/Barry.png index 3e9b072..29f6f2d 100644 Binary files a/figures/step32/minifig_characters/Barry.png and b/figures/step32/minifig_characters/Barry.png differ diff --git a/figures/step32/minifig_characters/Ben.png b/figures/step32/minifig_characters/Ben.png index bb98f78..1431165 100644 Binary files a/figures/step32/minifig_characters/Ben.png and b/figures/step32/minifig_characters/Ben.png differ diff --git a/figures/step32/minifig_characters/Brooklynn.png b/figures/step32/minifig_characters/Brooklynn.png index bd826d7..82f8cfc 100644 Binary files a/figures/step32/minifig_characters/Brooklynn.png and b/figures/step32/minifig_characters/Brooklynn.png differ diff --git a/figures/step32/minifig_characters/Claire_Dearing.png b/figures/step32/minifig_characters/Claire_Dearing.png index 0b1e6d1..52caa05 100644 Binary files a/figures/step32/minifig_characters/Claire_Dearing.png and b/figures/step32/minifig_characters/Claire_Dearing.png differ diff --git a/figures/step32/minifig_characters/Danny_Nedermeyer.png b/figures/step32/minifig_characters/Danny_Nedermeyer.png index 6d189c7..dd7d236 100644 Binary files a/figures/step32/minifig_characters/Danny_Nedermeyer.png and b/figures/step32/minifig_characters/Danny_Nedermeyer.png differ diff --git a/figures/step32/minifig_characters/Darius.png b/figures/step32/minifig_characters/Darius.png index c61e499..1463220 100644 Binary files a/figures/step32/minifig_characters/Darius.png and b/figures/step32/minifig_characters/Darius.png differ diff --git a/figures/step32/minifig_characters/Dennis_Nedry.png b/figures/step32/minifig_characters/Dennis_Nedry.png index 5977f7d..c0f13e3 100644 Binary files a/figures/step32/minifig_characters/Dennis_Nedry.png and b/figures/step32/minifig_characters/Dennis_Nedry.png differ diff --git a/figures/step32/minifig_characters/Duncan_Kincaid.png b/figures/step32/minifig_characters/Duncan_Kincaid.png index 2352ab6..713cd14 100644 Binary files a/figures/step32/minifig_characters/Duncan_Kincaid.png and b/figures/step32/minifig_characters/Duncan_Kincaid.png differ diff --git a/figures/step32/minifig_characters/Eli_Mills.png b/figures/step32/minifig_characters/Eli_Mills.png index 66a2b20..ef501b1 100644 Binary files a/figures/step32/minifig_characters/Eli_Mills.png and b/figures/step32/minifig_characters/Eli_Mills.png differ diff --git a/figures/step32/minifig_characters/Ellie_Sattler.png b/figures/step32/minifig_characters/Ellie_Sattler.png index 51f2c28..4a21552 100644 Binary files a/figures/step32/minifig_characters/Ellie_Sattler.png and b/figures/step32/minifig_characters/Ellie_Sattler.png differ diff --git a/figures/step32/minifig_characters/Franklin_Webb.png b/figures/step32/minifig_characters/Franklin_Webb.png index 583e34c..f89fded 100644 Binary files a/figures/step32/minifig_characters/Franklin_Webb.png and b/figures/step32/minifig_characters/Franklin_Webb.png differ diff --git a/figures/step32/minifig_characters/Gray_Mitchell.png b/figures/step32/minifig_characters/Gray_Mitchell.png index 800526d..3449e32 100644 Binary files a/figures/step32/minifig_characters/Gray_Mitchell.png and b/figures/step32/minifig_characters/Gray_Mitchell.png differ diff --git a/figures/step32/minifig_characters/Gunnar_Eversol.png b/figures/step32/minifig_characters/Gunnar_Eversol.png index 1bdef3b..80bf050 100644 Binary files a/figures/step32/minifig_characters/Gunnar_Eversol.png and b/figures/step32/minifig_characters/Gunnar_Eversol.png differ diff --git a/figures/step32/minifig_characters/Henry_Loomis.png b/figures/step32/minifig_characters/Henry_Loomis.png index dec36e4..fb26c62 100644 Binary files a/figures/step32/minifig_characters/Henry_Loomis.png and b/figures/step32/minifig_characters/Henry_Loomis.png differ diff --git a/figures/step32/minifig_characters/Henry_Wu.png b/figures/step32/minifig_characters/Henry_Wu.png index 20121ae..cee3a3f 100644 Binary files a/figures/step32/minifig_characters/Henry_Wu.png and b/figures/step32/minifig_characters/Henry_Wu.png differ diff --git a/figures/step32/minifig_characters/Hudson_Harper.png b/figures/step32/minifig_characters/Hudson_Harper.png index dd7bd27..8b15db1 100644 Binary files a/figures/step32/minifig_characters/Hudson_Harper.png and b/figures/step32/minifig_characters/Hudson_Harper.png differ diff --git a/figures/step32/minifig_characters/Ian_Malcolm.png b/figures/step32/minifig_characters/Ian_Malcolm.png index db366a2..001cccd 100644 Binary files a/figures/step32/minifig_characters/Ian_Malcolm.png and b/figures/step32/minifig_characters/Ian_Malcolm.png differ diff --git a/figures/step32/minifig_characters/Isabella_Delgado.png b/figures/step32/minifig_characters/Isabella_Delgado.png index c1eb564..aa984d0 100644 Binary files a/figures/step32/minifig_characters/Isabella_Delgado.png and b/figures/step32/minifig_characters/Isabella_Delgado.png differ diff --git a/figures/step32/minifig_characters/John_Hammond.png b/figures/step32/minifig_characters/John_Hammond.png index bceee67..86d02e8 100644 Binary files a/figures/step32/minifig_characters/John_Hammond.png and b/figures/step32/minifig_characters/John_Hammond.png differ diff --git a/figures/step32/minifig_characters/Kayla_Watts.png b/figures/step32/minifig_characters/Kayla_Watts.png index 48c1c80..8faf0bf 100644 Binary files a/figures/step32/minifig_characters/Kayla_Watts.png and b/figures/step32/minifig_characters/Kayla_Watts.png differ diff --git a/figures/step32/minifig_characters/Ken_Wheatley.png b/figures/step32/minifig_characters/Ken_Wheatley.png index f7f28e2..e7ca1ef 100644 Binary files a/figures/step32/minifig_characters/Ken_Wheatley.png and b/figures/step32/minifig_characters/Ken_Wheatley.png differ diff --git a/figures/step32/minifig_characters/Kenji.png b/figures/step32/minifig_characters/Kenji.png index 8595bf9..5332d74 100644 Binary files a/figures/step32/minifig_characters/Kenji.png and b/figures/step32/minifig_characters/Kenji.png differ diff --git a/figures/step32/minifig_characters/LeClerc.png b/figures/step32/minifig_characters/LeClerc.png index 3057837..77b9511 100644 Binary files a/figures/step32/minifig_characters/LeClerc.png and b/figures/step32/minifig_characters/LeClerc.png differ diff --git a/figures/step32/minifig_characters/Lex_Murphy.png b/figures/step32/minifig_characters/Lex_Murphy.png index 51cfefe..23c86f9 100644 Binary files a/figures/step32/minifig_characters/Lex_Murphy.png and b/figures/step32/minifig_characters/Lex_Murphy.png differ diff --git a/figures/step32/minifig_characters/Maisie_Lockwood.png b/figures/step32/minifig_characters/Maisie_Lockwood.png index 4298d95..443a2c0 100644 Binary files a/figures/step32/minifig_characters/Maisie_Lockwood.png and b/figures/step32/minifig_characters/Maisie_Lockwood.png differ diff --git a/figures/step32/minifig_characters/Martin_Krebs.png b/figures/step32/minifig_characters/Martin_Krebs.png index dec36e4..fca8436 100644 Binary files a/figures/step32/minifig_characters/Martin_Krebs.png and b/figures/step32/minifig_characters/Martin_Krebs.png differ diff --git a/figures/step32/minifig_characters/Owen_Grady.png b/figures/step32/minifig_characters/Owen_Grady.png index eef3cfc..9f3e2c8 100644 Binary files a/figures/step32/minifig_characters/Owen_Grady.png and b/figures/step32/minifig_characters/Owen_Grady.png differ diff --git a/figures/step32/minifig_characters/Rainn_DeLaCourt.png b/figures/step32/minifig_characters/Rainn_DeLaCourt.png index 6d8dbe2..cb387f9 100644 Binary files a/figures/step32/minifig_characters/Rainn_DeLaCourt.png and b/figures/step32/minifig_characters/Rainn_DeLaCourt.png differ diff --git a/figures/step32/minifig_characters/Ray_Arnold.png b/figures/step32/minifig_characters/Ray_Arnold.png index 20422aa..4ed5fad 100644 Binary files a/figures/step32/minifig_characters/Ray_Arnold.png and b/figures/step32/minifig_characters/Ray_Arnold.png differ diff --git a/figures/step32/minifig_characters/Reuben_Delgado.png b/figures/step32/minifig_characters/Reuben_Delgado.png index c1eb564..7d059fe 100644 Binary files a/figures/step32/minifig_characters/Reuben_Delgado.png and b/figures/step32/minifig_characters/Reuben_Delgado.png differ diff --git a/figures/step32/minifig_characters/Robert_Muldoon.png b/figures/step32/minifig_characters/Robert_Muldoon.png index 7de8477..263db79 100644 Binary files a/figures/step32/minifig_characters/Robert_Muldoon.png and b/figures/step32/minifig_characters/Robert_Muldoon.png differ diff --git a/figures/step32/minifig_characters/Sammy.png b/figures/step32/minifig_characters/Sammy.png index dcc7c3c..fb24777 100644 Binary files a/figures/step32/minifig_characters/Sammy.png and b/figures/step32/minifig_characters/Sammy.png differ diff --git a/figures/step32/minifig_characters/Simon_Masrani.png b/figures/step32/minifig_characters/Simon_Masrani.png index a948a0d..73ae5c1 100644 Binary files a/figures/step32/minifig_characters/Simon_Masrani.png and b/figures/step32/minifig_characters/Simon_Masrani.png differ diff --git a/figures/step32/minifig_characters/Sinjin_Prescott.png b/figures/step32/minifig_characters/Sinjin_Prescott.png index 6bee556..1f23745 100644 Binary files a/figures/step32/minifig_characters/Sinjin_Prescott.png and b/figures/step32/minifig_characters/Sinjin_Prescott.png differ diff --git a/figures/step32/minifig_characters/Soyona_Santos.png b/figures/step32/minifig_characters/Soyona_Santos.png index 330f00f..43a4271 100644 Binary files a/figures/step32/minifig_characters/Soyona_Santos.png and b/figures/step32/minifig_characters/Soyona_Santos.png differ diff --git a/figures/step32/minifig_characters/Teresa_Delgado.png b/figures/step32/minifig_characters/Teresa_Delgado.png index 5533afd..41f852c 100644 Binary files a/figures/step32/minifig_characters/Teresa_Delgado.png and b/figures/step32/minifig_characters/Teresa_Delgado.png differ diff --git a/figures/step32/minifig_characters/Tim_Murphy.png b/figures/step32/minifig_characters/Tim_Murphy.png index 3b3924c..341a8d5 100644 Binary files a/figures/step32/minifig_characters/Tim_Murphy.png and b/figures/step32/minifig_characters/Tim_Murphy.png differ diff --git a/figures/step32/minifig_characters/Vic_Hoskins.png b/figures/step32/minifig_characters/Vic_Hoskins.png index 037cf4b..d22ca6d 100644 Binary files a/figures/step32/minifig_characters/Vic_Hoskins.png and b/figures/step32/minifig_characters/Vic_Hoskins.png differ diff --git a/figures/step32/minifig_characters/Xavier_Dobbs.png b/figures/step32/minifig_characters/Xavier_Dobbs.png index 5533afd..45e6b92 100644 Binary files a/figures/step32/minifig_characters/Xavier_Dobbs.png and b/figures/step32/minifig_characters/Xavier_Dobbs.png differ diff --git a/figures/step32/minifig_characters/Yaz.png b/figures/step32/minifig_characters/Yaz.png index 5359860..9dd8b97 100644 Binary files a/figures/step32/minifig_characters/Yaz.png and b/figures/step32/minifig_characters/Yaz.png differ diff --git a/figures/step32/minifig_characters/Zach_Mitchell.png b/figures/step32/minifig_characters/Zach_Mitchell.png index 035492e..baf4f7e 100644 Binary files a/figures/step32/minifig_characters/Zach_Mitchell.png and b/figures/step32/minifig_characters/Zach_Mitchell.png differ diff --git a/figures/step32/minifig_characters/Zia_Rodriguez.png b/figures/step32/minifig_characters/Zia_Rodriguez.png index b801d67..3af0bdd 100644 Binary files a/figures/step32/minifig_characters/Zia_Rodriguez.png and b/figures/step32/minifig_characters/Zia_Rodriguez.png differ diff --git a/figures/step32/minifig_characters/Zora_Bennett.png b/figures/step32/minifig_characters/Zora_Bennett.png index 4319988..3e1892c 100644 Binary files a/figures/step32/minifig_characters/Zora_Bennett.png and b/figures/step32/minifig_characters/Zora_Bennett.png differ diff --git a/lib/plots/minifig_character_collages.py b/lib/plots/minifig_character_collages.py index aef8165..46132da 100644 --- a/lib/plots/minifig_character_collages.py +++ b/lib/plots/minifig_character_collages.py @@ -67,7 +67,8 @@ def build_character_collage( cells: List[Image.Image] = [] for row in entries: image_path = resources_dir / row["set_id"] / sanitized / "minifig.jpg" - label = f"{row['year']} - {row['set_num']}" + owned = "*" if row.get("in_collection", "").lower() == "true" else "" + label = f"{row['year']} - {row['set_num']}{owned} ({row['fig_num']})" if str(image_path) in missing: image = build_placeholder(image_height) else: diff --git a/lib/rebrickable/minifig_character_sets.py b/lib/rebrickable/minifig_character_sets.py index 923f3d3..e203930 100644 --- a/lib/rebrickable/minifig_character_sets.py +++ b/lib/rebrickable/minifig_character_sets.py @@ -48,17 +48,20 @@ def build_character_sets( "set_id": set_row["set_id"], "year": set_row["year"], "fig_num": fig_num, + "in_collection": set_row["in_collection"], } ) seen.add(key) - character_sets.sort(key=lambda row: (row["known_character"], int(row["year"]), row["set_num"], row["fig_num"])) + character_sets.sort( + key=lambda row: (row["known_character"], int(row["year"]), row["set_num"], row["fig_num"]) + ) return character_sets def write_character_sets(destination_path: Path, rows: Sequence[dict]) -> None: """Écrit le CSV listant les sets par personnage.""" ensure_parent_dir(destination_path) - fieldnames = ["known_character", "set_num", "set_id", "year", "fig_num"] + fieldnames = ["known_character", "set_num", "set_id", "year", "fig_num", "in_collection"] with destination_path.open("w", newline="") as csv_file: writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader() diff --git a/tests/test_minifig_character_collages.py b/tests/test_minifig_character_collages.py index 923b716..e3472be 100644 --- a/tests/test_minifig_character_collages.py +++ b/tests/test_minifig_character_collages.py @@ -26,19 +26,47 @@ def test_build_character_sets_and_collages(tmp_path: Path) -> None: {"set_num": "1003-1", "known_character": "Figurant", "fig_num": "fig-4"}, ] sets_lookup = { - "1000-1": {"set_id": "1000", "year": "2020"}, - "1001-1": {"set_id": "1001", "year": "2021"}, - "1002-1": {"set_id": "1002", "year": "2022"}, - "1003-1": {"set_id": "1003", "year": "2023"}, - "1004-1": {"set_id": "1004", "year": "2024"}, + "1000-1": {"set_id": "1000", "year": "2020", "in_collection": "true"}, + "1001-1": {"set_id": "1001", "year": "2021", "in_collection": "false"}, + "1002-1": {"set_id": "1002", "year": "2022", "in_collection": "false"}, + "1003-1": {"set_id": "1003", "year": "2023", "in_collection": "false"}, + "1004-1": {"set_id": "1004", "year": "2024", "in_collection": "true"}, } character_sets = build_character_sets(minifigs_rows, sets_lookup, excluded_characters=["Figurant"]) assert character_sets == [ - {"known_character": "Alice", "set_num": "1000-1", "set_id": "1000", "year": "2020", "fig_num": "fig-1"}, - {"known_character": "Bob", "set_num": "1001-1", "set_id": "1001", "year": "2021", "fig_num": "fig-2"}, - {"known_character": "Bob", "set_num": "1002-1", "set_id": "1002", "year": "2022", "fig_num": "fig-3"}, - {"known_character": "Claire Dearing", "set_num": "1004-1", "set_id": "1004", "year": "2024", "fig_num": "fig-5"}, + { + "known_character": "Alice", + "set_num": "1000-1", + "set_id": "1000", + "year": "2020", + "fig_num": "fig-1", + "in_collection": "true", + }, + { + "known_character": "Bob", + "set_num": "1001-1", + "set_id": "1001", + "year": "2021", + "fig_num": "fig-2", + "in_collection": "false", + }, + { + "known_character": "Bob", + "set_num": "1002-1", + "set_id": "1002", + "year": "2022", + "fig_num": "fig-3", + "in_collection": "false", + }, + { + "known_character": "Claire Dearing", + "set_num": "1004-1", + "set_id": "1004", + "year": "2024", + "fig_num": "fig-5", + "in_collection": "true", + }, ] resources_dir = tmp_path / "resources"