flaskapp / main.py
5m4ck3r's picture
Update main.py
0b36d2a verified
raw
history blame
3.61 kB
from flask import Flask, request, jsonify
import os
from hiou import hugging
import json
import io
def get_answer(image: io.BytesIO, question: str):
filename = image.name
spid = os.getenv('SPID')
hug = hugging(spid)
filelink = hug.upload(image)
image.seek(0, 2)
file_size = image.tell()
image.seek(0)
data = [
{
"meta": {
"_type": "gradio.FileData"
},
"mime_type": "image/jpeg",
"orig_name": filename,
"path": filelink.split("=", 1)[1],
"size": file_size,
"url": filelink
}
]
datas = os.getenv('DATA')
jsnd = json.loads(datas)
data.append(jsnd)
data.append(
question
)
data.append(
{
"tab_index": 0
}
)
hug.filnal_setup(data, 2, 15)
hug.start()
return hug.output.get("data")[0]
def valuate_qna(p: str, r: str) -> str:
spid2 = os.getenv('SPID2')
hug = hugging(spid2)
data = [
p,
r
]
hug.filnal_setup(data, 0, 12)
hug.start()
return hug.output.get("data", [None])[0]
def ocr(image: io.BytesIO) -> str:
spid3 = os.getenv('SPID3')
hug = hugging(spid3)
filelink = hug.upload(image)
image.seek(0, 2)
file_size = image.tell()
image.seek(0)
data = [
{
"meta": {
"_type": "gradio.FileData"
},
"mime_type": "image/jpeg",
"orig_name": "new.jpg",
"path": filelink.split("=", 1)[1],
"size": file_size,
"url": filelink
},
os.getenv('AZKEY'),
os.getenv('AZURL')
]
hug.filnal_setup(data, 0, 13)
hug.start()
return hug.output.get("data")[0]
app = Flask(__name__)
@app.route('/getans', methods=['POST'])
def gettans_task():
if 'file' not in request.files:
return jsonify({"status" : False, "msg" : "No file found"}), 400
file = request.files['file']
if file.filename == '':
return jsonify({"error": "No selected file"}), 400
file_content = io.BytesIO(file.read())
file_content.name = file.filename
headers = dict(request.headers)
if not headers.get("KEY") != os.getenv("KEY"):
return jsonify({"status" : False, "msg" : "Invalid API Key"}), 404
print(f"QUESTION ASKED : {headers.get('QU', '')}")
answer = get_answer(file_content, headers.get('QU', ''))
return jsonify({"status" : True, "ANS" : answer})
@app.route('/ocr', methods=['POST'])
def task_ocr():
if 'file' not in request.files:
return jsonify({"status" : False, "msg" : "No file found", "data" : f"{request.files}"}), 400
file = request.files['file']
if file.filename == '':
return jsonify({"error": "No selected file"}), 400
file_content = io.BytesIO(file.read())
file_content.name = file.filename
headers = dict(request.headers)
if not headers.get("KEY") != os.getenv("KEY"):
return jsonify({"status" : False, "msg" : "Invalid API Key"}), 404
answer = ocr(file_content)
return jsonify({"status" : True, "DATA" : answer})
@app.route('/check', methods=['POST', 'GET'])
def check_f():
jsndata = request.json
p = jsndata.get("p")
r = jsndata.get("r")
headers = dict(request.headers)
if not headers.get("KEY") != os.getenv("KEY"):
return jsonify({"status" : False, "msg" : "Invalid API Key"}), 404
data = valuate_qna(p, r)
return jsonify(
{
"status" : True,
"data" : data
}
)
@app.route('/')
def home():
return jsonify({"message": "Welcome to my Flask API!"})