Spaces:
Runtime error
Runtime error
File size: 1,710 Bytes
de3df6f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import pandas as pd
from io import BytesIO
from datetime import datetime
from typing import List, Dict, Set
def parse_letterboxd_csv(file_content: bytes) -> List[Dict]:
try:
df = pd.read_csv(BytesIO(file_content))
except Exception as e:
raise ValueError(f"Impossible de lire le CSV : {e}")
required = {"Date", "Name", "Year", "Letterboxd URI", "Rating"}
missing = required - set(df.columns)
if missing:
raise ValueError(f"Colonnes manquantes : {missing}")
records = []
for _, row in df.iterrows():
try:
rating_val = row["Rating"]
if pd.isna(rating_val):
continue
rating = float(rating_val)
date_viewed = datetime.strptime(str(row["Date"]).strip(), "%Y-%m-%d")
name = str(row["Name"]).strip()
year = int(row["Year"]) if pd.notna(row["Year"]) else None
key = (name + "_" + str(year)) if year else name
records.append({"key": key, "name": name, "year": year, "rating": rating, "date_viewed": date_viewed})
except Exception:
continue
return records
def parse_watchlist_csv(file_content: bytes) -> Set[str]:
try:
df = pd.read_csv(BytesIO(file_content))
except Exception:
return set()
if "Name" not in df.columns:
return set()
keys = set()
for _, row in df.iterrows():
try:
name = str(row["Name"]).strip()
year = int(row["Year"]) if pd.notna(row.get("Year", float("nan"))) else None
key = (name + "_" + str(year)) if year else name
keys.add(key)
except Exception:
continue
return keys
|