diff --git a/prophet/app.py b/prophet/app.py index 0b02c17..78c12b1 100644 --- a/prophet/app.py +++ b/prophet/app.py @@ -4,8 +4,10 @@ from datetime import datetime import feedparser from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware +from fastapi.staticfiles import StaticFiles from fastapi_utils.tasks import repeat_every +from prophet import view from prophet.domain.improvement import Improvement from prophet.domain.improvement_repo import IImprovementRepo from prophet.domain.original import Original @@ -63,20 +65,27 @@ def improve_originals(originals: list[Original]) -> list[Improvement]: return improvements -app = FastAPI() +def init() -> FastAPI: + app = FastAPI() + app.mount("/static", StaticFiles(directory="static"), name="static") -origins = [ - "http://localhost", - "http://localhost:8080", -] + origins = [ + "http://localhost", + "http://localhost:8080", + ] -app.add_middleware( - CORSMiddleware, - allow_origins=origins, - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) + app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], + ) + view.define_routes(app) + return app + + +app = init() @app.get("/improve-title") @@ -92,18 +101,20 @@ def improve_summary(original_title: str, new_title: str, original_summary: str): return llm.rewrite_summary(o, new_title) +# TODO: Switch to lifecycle events to avoid deprecated method @app.on_event("startup") @repeat_every(seconds=REFRESH_PERIOD) -def refresh_articles(): - adding = keep_only_new_originals(grab_latest_originals()) - improved = improve_originals(adding) - repo.add_all(improved) - print(f"Updated articles. Added {len(improved)} new ones.") +async def refresh_articles(): + _ = await fetch_update() @app.get("/update") -async def fetch_update(): - await refresh_articles() +async def fetch_update(debug_print: bool = True): + adding = keep_only_new_originals(grab_latest_originals()) + improved = improve_originals(adding) + repo.add_all(improved) + if debug_print: + print(f"Updated articles. Added {len(improved)} new ones.") return json.dumps(improved) diff --git a/prophet/view.py b/prophet/view.py index 6079d60..fbfcf59 100644 --- a/prophet/view.py +++ b/prophet/view.py @@ -1,84 +1,69 @@ +# pyright: reportUnusedFunction=false + +from fastapi import FastAPI from fastapi.responses import HTMLResponse -from prophet import app from prophet.domain.improvement_repo import IImprovementRepo from prophet.infra.improvement_pickle_repo import ImprovementPickleRepo repo: IImprovementRepo = ImprovementPickleRepo() -html_app = app.app - -@html_app.get("/improvements", response_class=HTMLResponse) -def list_improvements(): - improved = repo.get_all() - return ( - """ """ - + "\n".join( - f""" -