- Rename project to stealergram throughout - Add pyproject.toml (replaces requirements.txt split, folds pytest.ini) - Replace all em-dashes with hyphens across all source files Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
760 B
Python
39 lines
760 B
Python
"""
|
|
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}")
|