""" cache.py — Tracks already-processed file IDs to avoid redownloading. Persists to a simple JSON file on disk. """ import json import logging from pathlib import Path log = logging.getLogger(__name__) CACHE_FILE = Path("./data/cache.json") def _load() -> set: if not CACHE_FILE.exists(): return set() try: with open(CACHE_FILE, "r") as f: return set(json.load(f)) except Exception: return set() def _save(seen: set) -> None: with open(CACHE_FILE, "w") as f: json.dump(list(seen), f) def is_seen(file_id: int) -> bool: return file_id in _load() def mark_seen(file_id: int) -> None: seen = _load() seen.add(file_id) _save(seen) log.debug(f" Cached file ID {file_id}")