|
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):
|
|
url = os.getenv('url')
|
|
req = requests.post(url,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) |