"""Construit les frises chronologiques des têtes de minifigs par personnage.""" from pathlib import Path from lib.plots.minifig_character_collages import build_character_collages from lib.rebrickable.minifig_character_sets import ( build_character_sets, group_by_character, load_minifigs_by_set, load_missing_resources, load_sets, write_character_sets, ) MINIFIGS_BY_SET_PATH = Path("data/intermediate/minifigs_by_set.csv") SETS_ENRICHED_PATH = Path("data/intermediate/sets_enriched.csv") RESOURCES_DIR = Path("figures/rebrickable") DESTINATION_DIR = Path("figures/step32/minifig_heads") CHARACTER_SETS_PATH = Path("data/intermediate/minifig_character_sets.csv") DOWNLOAD_LOG_PATH = Path("data/intermediate/resources_download_log.csv") EXCLUDED_CHARACTERS = ["Figurant"] def main() -> None: """Assemble les apparitions des personnages et génère les frises de têtes associées.""" minifigs_by_set = load_minifigs_by_set(MINIFIGS_BY_SET_PATH) sets_lookup = load_sets(SETS_ENRICHED_PATH) character_sets = build_character_sets(minifigs_by_set, sets_lookup, excluded_characters=EXCLUDED_CHARACTERS) write_character_sets(CHARACTER_SETS_PATH, character_sets) missing_heads = load_missing_resources(DOWNLOAD_LOG_PATH, "head.jpg") grouped = group_by_character(character_sets) build_character_collages( grouped, RESOURCES_DIR, DESTINATION_DIR, missing_paths=missing_heads, image_filename="head.jpg", ) if __name__ == "__main__": main()