cobalt-api / app.py
raju014's picture
Upload app.py
0e8f0a3 verified
Raw
History Blame Contribute Delete
1.67 kB
import asyncio
import os
from fastapi import FastAPI
from fastapi.responses import FileResponse
from contextlib import asynccontextmanager
import subprocess
# We will run the bot as a background subprocess so it doesn't block the web server event loop
bot_process = None
@asynccontextmanager
async def lifespan(app: FastAPI):
global bot_process
# Setup data files
if not os.path.exists("game_history.csv"):
open("game_history.csv", "w").close()
# Start the bot.py in background with xvfb wrapper to simulate a real monitor display
bot_process = subprocess.Popen(["xvfb-run", "-a", "python", "run_bot.py"])
print("[SERVER] Bot started in background with Xvfb (Virtual Display)...")
yield
# Teardown: Stop the bot
if bot_process:
bot_process.terminate()
print("[SERVER] Bot stopped.")
app = FastAPI(lifespan=lifespan)
@app.get("/")
def read_root():
return {"status": "Active", "message": "Aviator Data Collector is running ๐Ÿš€"}
@app.get("/results")
def get_results():
try:
if os.path.exists("game_history.csv"):
with open("game_history.csv", "r") as f:
lines = f.readlines()
# return last 50 results
return {"results": [l.strip() for l in lines[-50:]]}
except:
pass
return {"results": []}
@app.get("/download")
def download_file():
"""Allows user to directly download the CSV file"""
if os.path.exists("game_history.csv"):
return FileResponse(path="game_history.csv", filename="game_history.csv", media_type="text/csv")
return {"error": "File not found or no data collected yet."}