1

Lister les sets filtrés par année en Markdown

This commit is contained in:
Richard Dern 2025-12-03 16:38:24 +01:00
parent 9ef0d6cb9f
commit 08ccc9ae48

View File

@ -0,0 +1,59 @@
"""Génère une liste Markdown des sets filtrés regroupés par année."""
import csv
from pathlib import Path
from lib.filesystem import ensure_parent_dir
SETS_PATH = Path("data/intermediate/sets_enriched.csv")
DESTINATION_PATH = Path("data/final/sets_by_year.md")
def load_sets(path: Path) -> list[dict]:
"""Charge les sets filtrés."""
rows: list[dict] = []
with path.open() as csv_file:
reader = csv.DictReader(csv_file)
for row in reader:
rows.append(row)
return rows
def group_sets_by_year(rows: list[dict]) -> dict[str, list[dict]]:
"""Regroupe les sets par année."""
grouped: dict[str, list[dict]] = {}
for row in rows:
year_rows = grouped.get(row["year"])
if year_rows is None:
year_rows = []
grouped[row["year"]] = year_rows
year_rows.append(row)
for year, items in grouped.items():
items.sort(key=lambda r: r["set_num"])
return grouped
def write_markdown(path: Path, grouped: dict[str, list[dict]]) -> None:
"""Écrit la liste Markdown des sets regroupés par année."""
ensure_parent_dir(path)
years = sorted(grouped.keys(), key=int)
lines: list[str] = ["## Liste des sets par année", ""]
for year in years:
lines.append(f"### {year}")
lines.append("")
for row in grouped[year]:
lines.append(f"- [{row['set_num']}]({row['rebrickable_url']}) - {row['name']}")
lines.append("")
path.write_text("\n".join(lines))
def main() -> None:
"""Construit le Markdown des sets filtrés classés par année."""
sets_rows = load_sets(SETS_PATH)
grouped = group_sets_by_year(sets_rows)
write_markdown(DESTINATION_PATH, grouped)
if __name__ == "__main__":
main()