Reworked cache for news and update manifest.

This commit is contained in:
2026-08-28 22:48:19 +02:00
parent c49c56bc97
commit d20eea6877
2 changed files with 101 additions and 5 deletions

View File

@@ -153,7 +153,13 @@ def fetch_news(
_write_cache(cache_path, articles)
return articles
except (OSError, NewsError, UnicodeDecodeError, json.JSONDecodeError):
return _read_cache(cache_path)
return read_cached_news(cache_path)
def read_cached_news(cache_path: Path) -> tuple[NewsArticle, ...]:
"""Read the last valid news feed without performing network I/O."""
return _read_cache(cache_path)
def fetch_latest_broadcast(
@@ -179,7 +185,13 @@ def fetch_latest_broadcast(
_write_broadcast_cache(cache_path, broadcast)
return broadcast
except (OSError, NewsError, UnicodeDecodeError, json.JSONDecodeError):
return _read_broadcast_cache(cache_path)
return read_cached_broadcast(cache_path)
def read_cached_broadcast(cache_path: Path) -> Broadcast | None:
"""Read the last valid broadcast without performing network I/O."""
return _read_broadcast_cache(cache_path)
def _parse_news(payload: bytes) -> tuple[NewsArticle, ...]:
@@ -288,7 +300,7 @@ def _read_cache(path: Path) -> tuple[NewsArticle, ...]:
if not isinstance(value, list):
return ()
return tuple(NewsArticle(**item) for item in value if isinstance(item, dict))
except (OSError, TypeError, json.JSONDecodeError):
except (OSError, UnicodeError, TypeError, json.JSONDecodeError):
return ()
@@ -309,7 +321,7 @@ def _read_broadcast_cache(path: Path) -> Broadcast | None:
try:
value = json.loads(path.read_text(encoding="utf-8"))
return Broadcast(**value) if isinstance(value, dict) else None
except (OSError, TypeError, json.JSONDecodeError):
except (OSError, UnicodeError, TypeError, json.JSONDecodeError):
return None