FOIA_Doc_Search / saved_searches.py
GodsDevProject's picture
Create saved_searches.py
7b326b8 verified
raw
history blame
1.36 kB
import json
import os
from datetime import datetime
from typing import List, Dict
SAVE_PATH = "saved_searches.json"
MAX_SAVED = 25
def _load() -> List[Dict]:
if not os.path.exists(SAVE_PATH):
return []
try:
with open(SAVE_PATH, "r") as f:
return json.load(f)
except Exception:
return []
def _save(data: List[Dict]):
try:
with open(SAVE_PATH, "w") as f:
json.dump(data, f, indent=2)
except Exception:
pass
def save(query: str, extended: bool):
"""
Persist a saved search (privacy-safe, local only).
"""
if not query.strip():
return
data = _load()
entry = {
"query": query,
"extended": bool(extended),
"timestamp": datetime.utcnow().isoformat() + "Z",
}
data.insert(0, entry)
data = data[:MAX_SAVED]
_save(data)
def render() -> str:
"""
Render saved searches as markdown for Gradio.
"""
data = _load()
if not data:
return "_No saved searches yet._"
lines = ["### 💾 Saved Searches\n"]
for i, s in enumerate(data, start=1):
mode = "Extended" if s["extended"] else "Standard"
lines.append(
f"{i}. **{s['query']}** \n"
f" _Mode:_ {mode} · _Saved:_ {s['timestamp']}"
)
return "\n\n".join(lines)