Lister les sets filtrés par année en Markdown
This commit is contained in:
parent
9ef0d6cb9f
commit
08ccc9ae48
59
scripts/list_sets_by_year.py
Normal file
59
scripts/list_sets_by_year.py
Normal 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()
|
||||||
Loading…
x
Reference in New Issue
Block a user