from flask import Flask, render_template,request,jsonify,Response import os import json from flask_cors import CORS import time from flask_limiter import Limiter from flask_limiter.util import get_remote_address import requests app = Flask(__name__) CORS(app) limiter = Limiter( key_func=get_remote_address, app=app, default_limits=["2000 per day", "500 per hour"] ) @app.route("/") def index(): return render_template('models.html') @app.route('/gen', methods=['POST']) @limiter.limit("8 per minute") def Hf(): prompt = request.json.get('prompt', '') negative = request.json.get('negative', '') steps = request.json.get('steps', 20) width = request.json.get('width',1024) height = request.json.get('height',1024) scale = request.json.get('scale',7) model = request.json.get('model','sd3') style = request.json.get('style', 'Cinematic') def Gen(prompt,negative,steps,width,height,scale,style,model): req = requests.post('https://xyplon-server.hf.space/hf/img/gen',headers={ 'Authorization' : os.getenv('auth') },json={ 'prompt': prompt, 'negative': negative, 'steps': steps, 'width': width, 'height': height, 'scale': scale, 'model' : model, 'style': style }) for chunk in req.iter_lines(): yield f'{chunk.decode()}\n\n' return Response(Gen(prompt=prompt,negative=negative,steps=steps,width=width,height=height,scale=scale,style=style,model=model), mimetype="text/event-stream") if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=7860)