Files
rename-mvp/app/api/tvdb.py
T
2026-03-07 09:59:27 +01:00

58 lines
1.8 KiB
Python

from fastapi import APIRouter, HTTPException, Query
from app.services.tvdb_auth_service import TvdbAuthService
from app.services.tvdb_client import TvdbClient
router = APIRouter()
@router.get("/auth-status")
def auth_status():
service = TvdbAuthService()
return service.auth_status()
@router.post("/login")
def force_login():
service = TvdbAuthService()
try:
state = service.login_and_store_token()
return {
"status": "ok",
"issued_at": state["issued_at"],
"expires_at": state["expires_at"],
"renew_after": state["renew_after"],
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/search")
def search_series(q: str = Query(..., min_length=1)):
"""
Eenvoudige smoke test richting TVDB.
Deze proxy gebruikt de backend token flow en filtert series uit het resultaat.
"""
client = TvdbClient()
try:
# In TVDB v4 wordt search via de API ondersteund; deze proxy is bewust dun.
payload = client.get("/search", params={"query": q, "type": "series"})
items = payload.get("data", [])
normalized = []
for item in items:
name = item.get("name") or item.get("seriesName") or item.get("slug")
year = item.get("year")
normalized.append(
{
"id": item.get("tvdb_id") or item.get("id"),
"name": name,
"year": year,
"display_name": f"{name} ({year})" if name and year else name,
"raw": item,
}
)
return {"items": normalized}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))