xuzuoyun 3 年之前
父节点
当前提交
862c57126b
共有 41 个文件被更改,包括 21 次插入1 次删除
  1. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/6d61e8aa5b28428e9191a182ccea2ee1.jpg
  2. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/6d61e8aa5b28428e9191a182ccea2ee1.mp4
  3. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000000.jpg
  4. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000001.jpg
  5. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000002.jpg
  6. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000003.jpg
  7. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000004.jpg
  8. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000005.jpg
  9. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000006.jpg
  10. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000007.jpg
  11. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000008.jpg
  12. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000009.jpg
  13. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000010.jpg
  14. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000011.jpg
  15. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000012.jpg
  16. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000013.jpg
  17. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000014.jpg
  18. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000015.jpg
  19. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000016.jpg
  20. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000017.jpg
  21. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000018.jpg
  22. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000019.jpg
  23. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000020.jpg
  24. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000021.jpg
  25. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000022.jpg
  26. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000023.jpg
  27. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000024.jpg
  28. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000025.jpg
  29. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000026.jpg
  30. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000027.jpg
  31. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000028.jpg
  32. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000029.jpg
  33. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000030.jpg
  34. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000031.jpg
  35. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000032.jpg
  36. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000033.jpg
  37. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000034.jpg
  38. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000035.jpg
  39. 二进制
      6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000036.jpg
  40. 4 1
      database/database.py
  41. 17 0
      main.py

二进制
6d61e8aa5b28428e9191a182ccea2ee1/6d61e8aa5b28428e9191a182ccea2ee1.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/6d61e8aa5b28428e9191a182ccea2ee1.mp4


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000000.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000001.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000002.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000003.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000004.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000005.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000006.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000007.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000008.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000009.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000010.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000011.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000012.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000013.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000014.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000015.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000016.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000017.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000018.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000019.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000020.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000021.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000022.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000023.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000024.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000025.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000026.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000027.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000028.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000029.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000030.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000031.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000032.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000033.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000034.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000035.jpg


二进制
6d61e8aa5b28428e9191a182ccea2ee1/temp/frame_0000036.jpg


+ 4 - 1
database/database.py

@@ -22,13 +22,14 @@ class Task(Base):
     finish_time = Column(DateTime)
     input_video_md5 = Column(String(100))
     input_image_md5 = Column(String(100))
+    output_video_md5 = Column(String(100))
     status = Column(String(100))
     create_by = Column(String(100))
     create_time = Column(DateTime, nullable=True, default=datetime.now)
     update_time = Column(DateTime)
 
 # 初始化数据库连接:
-engine = create_engine('mysql+mysqlconnector://data:'+passowrd+'@139.186.27.96:4000/db_ai_swap')
+engine = create_engine('mysql+mysqlconnector://data:'+passowrd+'@139.186.27.96:3390/db_ai_swap')
 # 创建DBSession类型:
 DBSession = sessionmaker(bind=engine)
 
@@ -47,6 +48,7 @@ def query(id,video_md5,image_md5,create_by):
     # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
     task = session.query(Task).filter(condition).order_by(Task.create_time.desc()).all()
     # 关闭Session:
+    print(task)
     session.close()
     return task
 
@@ -72,6 +74,7 @@ def update(task):
     taskdb.output_video_url = task.output_video_url
     taskdb.start_time = task.start_time
     taskdb.finish_time = task.finish_time
+    taskdb.output_video_md5 = task.output_video_md5
     # 提交即保存到数据库:
     session.commit()
     # 关闭session:

+ 17 - 0
main.py

@@ -26,6 +26,7 @@ from util.cos_util import cos_upload
 from database.database import insert,update,query,Task
 from datetime import datetime
 from fastapi.middleware.cors import CORSMiddleware
+import hashlib
 
 threadPool = ThreadPoolExecutor(max_workers=4)
 def lcm(a, b): return abs(a * b) / fractions.gcd(a, b) if a and b else 0
@@ -50,6 +51,15 @@ def get_args_from_json(json_file_path, args_dict):
         args_dict[key] = summary_dict[key]
  
     return args_dict
+
+def getmd5(file):
+    m = hashlib.md5()
+    with open(file,'rb') as f:
+        for line in f:
+            m.update(line)
+    md5code = m.hexdigest()
+    print(md5code)
+    return md5code
 class Item(BaseModel):
     isTrain:bool = False
     use_mask:bool = False
@@ -165,6 +175,9 @@ def task_query(queryItem:QueryItem):
 @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
@@ -274,6 +287,10 @@ def videoSwap(opt):
         task.status = 'process_error'
         update(task)
         del_file(opt.base_path)
+    task = query(opt.taskId,None,None,None)[0]
+    task.status = 'uploading'
+    task.output_video_md5 = getmd5(opt.output_path)
+    update(task)
     url = cos_upload(opt.output_path,datetime.now().strftime('%Y%m%d')+'/'+opt.output_file_name)
     del_file(opt.base_path)
     return {'taskId':opt.taskId,'outputUrl':url}