31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
"""Calcule la réutilisation des têtes de minifigs dans le catalogue LEGO."""
|
|
|
|
from pathlib import Path
|
|
|
|
from lib.rebrickable.head_reuse import aggregate_head_reuse, build_head_presence, load_minifigs_by_set, write_head_reuse
|
|
from lib.rebrickable.minifigs_by_set import load_parts_catalog, select_head_parts
|
|
from lib.rebrickable.minifig_character_sets import load_sets
|
|
|
|
|
|
MINIFIGS_BY_SET_PATH = Path("data/intermediate/minifigs_by_set.csv")
|
|
PARTS_CATALOG_PATH = Path("data/raw/parts.csv")
|
|
INVENTORIES_PATH = Path("data/raw/inventories.csv")
|
|
INVENTORY_PARTS_PATH = Path("data/raw/inventory_parts.csv")
|
|
SETS_ENRICHED_PATH = Path("data/intermediate/sets_enriched.csv")
|
|
DESTINATION_PATH = Path("data/intermediate/head_reuse.csv")
|
|
|
|
|
|
def main() -> None:
|
|
"""Construit le CSV des têtes filtrées avec leurs usages dans le catalogue complet."""
|
|
minifigs = load_minifigs_by_set(MINIFIGS_BY_SET_PATH)
|
|
parts_catalog = load_parts_catalog(PARTS_CATALOG_PATH)
|
|
head_parts = select_head_parts(parts_catalog)
|
|
sets_lookup = load_sets(SETS_ENRICHED_PATH)
|
|
presence = build_head_presence(INVENTORIES_PATH, INVENTORY_PARTS_PATH, head_parts)
|
|
reuse = aggregate_head_reuse(minifigs, parts_catalog, presence, sets_lookup)
|
|
write_head_reuse(DESTINATION_PATH, reuse)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|