syllabus/app/main.py
2025-04-20 11:13:12 -04:00

45 lines
1.4 KiB
Python

from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse, JSONResponse
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from fastapi.concurrency import run_in_threadpool
from pathlib import Path
import app.download as download
import json
app = FastAPI()
# # # Mount static files if needed (e.g. CSS, JS, images)
# app.mount("/static", StaticFiles(directory="/static"), name="static")
# # Jinja2 template directory
templates = Jinja2Templates(directory="/app/templates")
# api
@app.get("/dropoutUpdate")
async def dropoutUpdate():
return await run_in_threadpool(download.dropout.series())
@app.get("/dropoutSeries", response_class=JSONResponse)
async def dropoutSeries():
file_path = Path("/data/dropout.json")
if file_path.exists():
with file_path.open("r", encoding="utf-8") as f:
data = json.load(f)
return JSONResponse(content=data)
return JSONResponse(content={"error": "File not found"}, status_code=404)
@app.get("/dropoutDownload")
async def dropoutDownload(show: str, season: str, episode: str):
download.dropout.show(show,season,episode)
@app.get("/ydl")
async def ydl(url: str, location: str):
download.youtube.ydl(url,location)
# html
@app.get("/", response_class=HTMLResponse)
async def read_root(request: Request):
return templates.TemplateResponse("index.html", {"request": request, "message": "Hello from FastAPI + Jinja2!"})