34 lines
885 B
Python
34 lines
885 B
Python
#!/usr/bin/env python3
|
|
# Script Version: 0.5
|
|
# Description: EmojiTrail game backend (no Flask) — switch to FastAPI
|
|
|
|
from fastapi import FastAPI, Request
|
|
from fastapi.responses import FileResponse, JSONResponse
|
|
from fastapi.staticfiles import StaticFiles
|
|
import random
|
|
import os
|
|
|
|
app = FastAPI()
|
|
|
|
app.mount("/static", StaticFiles(directory="static"), name="static")
|
|
|
|
|
|
|
|
@app.get("/")
|
|
def serve_index():
|
|
return FileResponse("static/index.html")
|
|
|
|
@app.post("/generate")
|
|
async def generate(request: Request):
|
|
body = await request.json()
|
|
level = body.get("level", 1)
|
|
trail = random.choices(EMOJIS, k=level)
|
|
|
|
distractor_count = 12 - len(trail)
|
|
distractors = random.sample([e for e in EMOJIS if e not in trail], distractor_count)
|
|
options = list(set(trail + distractors))
|
|
random.shuffle(options)
|
|
|
|
return JSONResponse({"trail": trail, "options": options})
|
|
|