Save and load with pickle
This commit is contained in:
parent
a1ddd7cd11
commit
a032ecbc55
1 changed files with 41 additions and 1 deletions
|
|
@ -1,6 +1,9 @@
|
||||||
import os
|
import os
|
||||||
|
import pickle
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from pathlib import Path
|
||||||
|
from pprint import pprint
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
import feedparser
|
import feedparser
|
||||||
|
|
@ -11,6 +14,8 @@ from groq import Groq
|
||||||
BEE_FEED = "https://babylonbee.com/feed"
|
BEE_FEED = "https://babylonbee.com/feed"
|
||||||
BEE_FEED_TEST = "test/resources/feed.atom" # NOTE: Switch out when done testing
|
BEE_FEED_TEST = "test/resources/feed.atom" # NOTE: Switch out when done testing
|
||||||
|
|
||||||
|
PICKLE_DIR = "/tmp/pollenprophet"
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Original: # BadJoke: Sting
|
class Original: # BadJoke: Sting
|
||||||
|
|
@ -45,6 +50,34 @@ def grab_latest_originals() -> list[Original]:
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def save_new_improvements(improvements: list[Improvement]) -> None:
|
||||||
|
save_dir = Path(PICKLE_DIR)
|
||||||
|
save_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
for imp in improvements:
|
||||||
|
fname = save_dir / f"{int(imp.original.date.timestamp())}_{imp.id}"
|
||||||
|
try:
|
||||||
|
with open(fname, "wb") as f:
|
||||||
|
pickle.dump(imp, f)
|
||||||
|
print(f"Saved {fname}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error saving file {fname}: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
def load_existing_improvements() -> list[Improvement]:
|
||||||
|
improvements: list[Improvement] = []
|
||||||
|
for fname in Path(PICKLE_DIR).iterdir():
|
||||||
|
if not fname.is_file():
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(fname, "rb") as f:
|
||||||
|
obj: Improvement = pickle.load(f)
|
||||||
|
improvements.append(obj)
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
print(f"Error loading file {fname}: {e}")
|
||||||
|
return improvements
|
||||||
|
|
||||||
|
|
||||||
def improve_with_groq(original: str) -> str:
|
def improve_with_groq(original: str) -> str:
|
||||||
client = Groq(api_key=os.getenv("GROQ_API_KEY", "NO_API_KEY_FOUND"))
|
client = Groq(api_key=os.getenv("GROQ_API_KEY", "NO_API_KEY_FOUND"))
|
||||||
|
|
||||||
|
|
@ -98,7 +131,14 @@ def improve_headline(content: str):
|
||||||
def start() -> None:
|
def start() -> None:
|
||||||
from uvicorn import run
|
from uvicorn import run
|
||||||
|
|
||||||
grab_latest_originals()
|
orig = grab_latest_originals()
|
||||||
|
improvements = [
|
||||||
|
Improvement(original=o, title="hithere", summary="alongsummary")
|
||||||
|
for o in orig
|
||||||
|
]
|
||||||
|
save_new_improvements(improvements)
|
||||||
|
|
||||||
|
pprint(load_existing_improvements())
|
||||||
|
|
||||||
# run("prophet.app:app", reload=True)
|
# run("prophet.app:app", reload=True)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue