50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
"""Calcule les pièces rares en comparant les sets filtrés au reste du catalogue."""
|
|
|
|
from pathlib import Path
|
|
|
|
from lib.rebrickable.part_rarity import build_part_rarity, select_until_reused, write_part_rarity
|
|
|
|
|
|
PARTS_FILTERED_PATH = Path("data/intermediate/parts_filtered.csv")
|
|
INVENTORIES_PATH = Path("data/raw/inventories.csv")
|
|
INVENTORY_PARTS_PATH = Path("data/raw/inventory_parts.csv")
|
|
PARTS_CATALOG_PATH = Path("data/raw/parts.csv")
|
|
PART_CATEGORIES_PATH = Path("data/raw/part_categories.csv")
|
|
FILTERED_SETS_PATH = Path("data/intermediate/sets_enriched.csv")
|
|
DESTINATION_PATH = Path("data/intermediate/part_rarity.csv")
|
|
DESTINATION_PRINTED_EXCLUDED_PATH = Path("data/intermediate/part_rarity_no_print.csv")
|
|
TOP_DESTINATION_PATH = Path("data/intermediate/part_rarity_exclusive.csv")
|
|
TOP_PRINTED_EXCLUDED_PATH = Path("data/intermediate/part_rarity_exclusive_no_print.csv")
|
|
|
|
|
|
def main() -> None:
|
|
"""Construit les CSV complets et top 10 des pièces les plus rares."""
|
|
rows = build_part_rarity(
|
|
PARTS_FILTERED_PATH,
|
|
INVENTORIES_PATH,
|
|
INVENTORY_PARTS_PATH,
|
|
PARTS_CATALOG_PATH,
|
|
PART_CATEGORIES_PATH,
|
|
FILTERED_SETS_PATH,
|
|
)
|
|
write_part_rarity(DESTINATION_PATH, rows)
|
|
top_rows = select_until_reused(rows)
|
|
write_part_rarity(TOP_DESTINATION_PATH, top_rows)
|
|
|
|
rows_no_print = build_part_rarity(
|
|
PARTS_FILTERED_PATH,
|
|
INVENTORIES_PATH,
|
|
INVENTORY_PARTS_PATH,
|
|
PARTS_CATALOG_PATH,
|
|
PART_CATEGORIES_PATH,
|
|
FILTERED_SETS_PATH,
|
|
exclude_printed=True,
|
|
)
|
|
write_part_rarity(DESTINATION_PRINTED_EXCLUDED_PATH, rows_no_print)
|
|
top_rows_no_print = select_until_reused(rows_no_print)
|
|
write_part_rarity(TOP_PRINTED_EXCLUDED_PATH, top_rows_no_print)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|