|
@@ -0,0 +1,103 @@
|
|
|
|
+from typing import Optional
|
|
|
|
+from fastapi import FastAPI
|
|
|
|
+from concurrent.futures import ThreadPoolExecutor
|
|
|
|
+from sqlalchemy.sql.elements import Null
|
|
|
|
+from sqlalchemy.sql.expression import null
|
|
|
|
+from datetime import date
|
|
|
|
+import requests
|
|
|
|
+import uuid
|
|
|
|
+import os
|
|
|
|
+import uvicorn
|
|
|
|
+from asr_client import send_asr_request,send_task_request
|
|
|
|
+from database import insert,update,query,Task
|
|
|
|
+from datetime import datetime
|
|
|
|
+from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
+import hashlib
|
|
|
|
+import traceback
|
|
|
|
+import json
|
|
|
|
+
|
|
|
|
+threadPool = ThreadPoolExecutor(max_workers=4)
|
|
|
|
+app = FastAPI()
|
|
|
|
+origins = [
|
|
|
|
+ "http://192.168.1.34",
|
|
|
|
+ "http://192.168.1.34:8000",
|
|
|
|
+ "http://192.168.1.105",
|
|
|
|
+ "http://192.168.1.105:3000",
|
|
|
|
+ "http://111.206.86.186",
|
|
|
|
+ "http://111.206.86.186:3000",
|
|
|
|
+ "http://adsp.tjyourong.com.cn",
|
|
|
|
+ "http://adsp.tjyourong.com.cn:3000",
|
|
|
|
+ "http://adsp.c-top.com.cn",
|
|
|
|
+ "http://adsp.c-top.com.cn:3000"
|
|
|
|
+]
|
|
|
|
+
|
|
|
|
+app.add_middleware(
|
|
|
|
+ CORSMiddleware,
|
|
|
|
+ allow_origins=origins,
|
|
|
|
+ allow_credentials=True,
|
|
|
|
+ allow_methods=["*"],
|
|
|
|
+ allow_headers=["*"],
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+class QueryItem():
|
|
|
|
+ md5:Optional[str]=None
|
|
|
|
+ url:Optional[str]=None
|
|
|
|
+
|
|
|
|
+@app.get('/')
|
|
|
|
+def index():
|
|
|
|
+ return {'message': '你已经正确创建 FastApi 服务!'}
|
|
|
|
+
|
|
|
|
+@app.post('/asr/task/submit')
|
|
|
|
+def task_submit(md5:str,url:str):
|
|
|
|
+ json = send_asr_request(url)
|
|
|
|
+ task = Task(md5=md5,task_id=json.Data.TaskId,task_result=json.to_json_string(),task_status=1)
|
|
|
|
+ insert(task)
|
|
|
|
+ return {'code':0,'taskId':json.Data.TaskId}
|
|
|
|
+
|
|
|
|
+@app.post('/asr/task/result')
|
|
|
|
+def task_submit(task_id:int):
|
|
|
|
+ json = send_task_request(task_id)
|
|
|
|
+ task = query(None,None,task_id)[0]
|
|
|
|
+ task.task_status=json.Data.Status
|
|
|
|
+ task.task_result = json.to_json_string()
|
|
|
|
+ if json.Data.Status == 2:
|
|
|
|
+ task.word_text = json.Data.ResultDetail[0].FinalSentence
|
|
|
|
+ task.word_split = json.Data.ResultDetail[0].SliceSentence
|
|
|
|
+ update(task)
|
|
|
|
+ return {'code':0,'status':json.Data.StatusStr}
|
|
|
|
+
|
|
|
|
+@app.post('/asr/task/list')
|
|
|
|
+def task_submit(task_status:int):
|
|
|
|
+ task = query(None,task_status,None)
|
|
|
|
+ return {'code':0,'data':task}
|
|
|
|
+
|
|
|
|
+# @app.post('/asr/task/result')
|
|
|
|
+# def retry(item:Item):
|
|
|
|
+# #插入数据库
|
|
|
|
+# task = query(item.taskId,None,None,None)[0]
|
|
|
|
+# item.inputVideoUrl = task.input_video_url
|
|
|
|
+# item.inputImageUrl = task.input_image_url
|
|
|
|
+# threadPool.submit(videoSwap,item).add_done_callback(swapFinish)
|
|
|
|
+# return {'code':0,'data':{'taskId': task.id}}
|
|
|
|
+
|
|
|
|
+# @app.post('/jeecg-boot/task/single')
|
|
|
|
+# def single(item:Item):
|
|
|
|
+# #插入数据库
|
|
|
|
+# old_task = query(None,item.videoMd5,item.imageMd5,None)
|
|
|
|
+# if len(old_task) > 0:
|
|
|
|
+# return {'code':-1,'data':old_task}
|
|
|
|
+# uid = str(uuid.uuid4())
|
|
|
|
+# suid = ''.join(uid.split('-'))
|
|
|
|
+# video_input = item.inputVideoUrl
|
|
|
|
+# image_input = item.inputImageUrl
|
|
|
|
+# task = Task(input_video_url = video_input,input_image_url=image_input,status='waiting',input_video_md5=item.videoMd5,input_image_md5=item.imageMd5,create_by=item.createBy)
|
|
|
|
+# task = insert(task)
|
|
|
|
+# item.taskId = task.id
|
|
|
|
+# threadPool.submit(videoSwap,item).add_done_callback(swapFinish)
|
|
|
|
+
|
|
|
|
+# return {'code':0,'data':{'taskId': task.id}}
|
|
|
|
+
|
|
|
|
+if __name__ == '__main__':
|
|
|
|
+ uvicorn.run(app='main:app', host="0.0.0.0", port=8000, reload=True, debug=True)
|
|
|
|
+
|
|
|
|
+#gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker #线上启动命令
|