from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates import dataset import asyncio from datetime import datetime app = FastAPI(title="RSS Feed Manager") # Database setup db = dataset.connect('sqlite:///feeds.db') # Templates setup templates = Jinja2Templates(directory="templates") # Import routers from routers import router as manage_router, run_sync_task app.include_router(manage_router) @app.on_event("startup") async def startup_event(): # Ensure feeds table exists feeds_table = db['feeds'] # Start background sync task asyncio.create_task(hourly_sync_task()) async def hourly_sync_task(): while True: await asyncio.sleep(3600) # Wait 1 hour try: await run_sync_task() except Exception as e: print(f"Error in hourly sync: {e}") if __name__ == "__main__": import uvicorn uvicorn.run(app, host="127.0.0.1", port=8592)