|
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!"}) |
|
|
|
|