Files
API5005/main.py
T
2026-10-17 02:27:56 +02:00

41 lines
1.1 KiB
Python

import threading
import time
import fastapi
import requests
app = fastapi.FastAPI()
lanyard_link = "https://api.lanyard.rest/v1/users/1558056824387805300"
CACHE_TTL = 1.0
_cache = {"data": None, "time": 0.0}
_lock = threading.Lock()
def get_lanyard():
if _cache["data"] is not None and time.monotonic() - _cache["time"] < CACHE_TTL:
return _cache["data"]
with _lock:
if _cache["data"] is not None and time.monotonic() - _cache["time"] < CACHE_TTL:
return _cache["data"]
try:
response = requests.get(lanyard_link, timeout=5)
response.raise_for_status()
_cache["data"] = response.json()
_cache["time"] = time.monotonic()
except requests.RequestException:
if _cache["data"] is None:
raise fastapi.HTTPException(status_code=502, detail="Lanyard indisponible")
return _cache["data"]
@app.get("/")
def read_root():
return {"message": "Welcome to IKAVOID API (5005)"}
@app.get("/discord")
def read_lanyard():
return get_lanyard()
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=5005)