Files
Pokemon-DNS-DS-Server/server.py
T
2025-09-16 17:28:47 -04:00

52 lines
1.7 KiB
Python

from flask import Flask, request, send_file, abort, jsonify
import os, random, time
BASE = os.path.dirname(os.path.abspath(__file__))
GEN4_DIR = os.path.join(BASE, "wonder_gen4")
GEN5_DIR = os.path.join(BASE, "wonder_gen5")
LOGFILE = os.path.join(BASE, "server.log")
app = Flask(__name__)
def log(msg):
ts = time.strftime("%Y-%m-%d %H:%M:%S")
line = f"[{ts}] {msg}\n"
print(line, end="")
with open(LOGFILE, "a") as f:
f.write(line)
def list_files(folder, exts):
return [f for f in os.listdir(folder) if any(f.lower().endswith(e) for e in exts)]
@app.route("/")
def index():
return "Pokémon Wonder Card Server running"
@app.route("/gen4")
def gen4():
files = list_files(GEN4_DIR, [".pcd", ".pgt"])
if not files: return abort(404, "No Gen4 files")
chosen = request.args.get("file") or random.choice(files)
if chosen not in files: return abort(404, "File not found")
log(f"Gen4 send {chosen} to {request.remote_addr}")
return send_file(os.path.join(GEN4_DIR, chosen), mimetype="application/octet-stream")
@app.route("/gen5")
def gen5():
files = list_files(GEN5_DIR, [".pgf"])
if not files: return abort(404, "No Gen5 files")
chosen = request.args.get("file") or random.choice(files)
if chosen not in files: return abort(404, "File not found")
log(f"Gen5 send {chosen} to {request.remote_addr}")
return send_file(os.path.join(GEN5_DIR, chosen), mimetype="application/octet-stream")
@app.route("/list")
def list_all():
return jsonify({
"gen4": list_files(GEN4_DIR, [".pcd", ".pgt"]),
"gen5": list_files(GEN5_DIR, [".pgf"])
})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=80)