|
|
@@ -21,6 +21,9 @@ from service.run_main import RunMain
|
|
|
import importlib
|
|
|
from service.auto_deal_pics.upload_pic import UploadPic
|
|
|
from service.OnePicTest import OnePicTest
|
|
|
+import hashlib
|
|
|
+import win32api, win32gui, win32con
|
|
|
+from win32gui import EnumWindows, GetWindowText
|
|
|
|
|
|
# from service.AutoDealPics import AutoDealPics
|
|
|
# for plugin in settings.plugins:
|
|
|
@@ -28,6 +31,16 @@ from service.OnePicTest import OnePicTest
|
|
|
# print("module_path", module_path, class_name)
|
|
|
# module = importlib.import_module(module_path)
|
|
|
# getattr(module, class_name)
|
|
|
+def calculate_md5(filepath):
|
|
|
+ # 打开文件,以二进制只读模式打开
|
|
|
+ with open(filepath, "rb") as f:
|
|
|
+ # 创建MD5哈希对象
|
|
|
+ md5hash = hashlib.md5()
|
|
|
+ # 循环读取文件的内容并更新哈希对象
|
|
|
+ for chunk in iter(lambda: f.read(4096), b""):
|
|
|
+ md5hash.update(chunk)
|
|
|
+ # 返回MD5哈希的十六进制表示
|
|
|
+ return md5hash.hexdigest()
|
|
|
|
|
|
|
|
|
@app.get("/")
|
|
|
@@ -589,28 +602,23 @@ def insertEmptyLogoList(session):
|
|
|
|
|
|
@app.get("/logo_list", description="logo列表")
|
|
|
def logo_list():
|
|
|
- session = SqlQuery()
|
|
|
- photos = CRUD(SysConfigs)
|
|
|
- item = photos.read(session, conditions={"key": "logo_configs"})
|
|
|
- if item == None:
|
|
|
- item = insertEmptyLogoList(session)
|
|
|
- session.close()
|
|
|
- return {
|
|
|
- "code": 0,
|
|
|
- "msg": "",
|
|
|
- "data": json.loads(item.value),
|
|
|
- }
|
|
|
+ logo_dir = "{}/data/logo/".format(os.getcwd()).replace("\\", "/")
|
|
|
+ check_path(logo_dir)
|
|
|
+ logo_files = os.listdir(logo_dir)
|
|
|
+ logo_list = []
|
|
|
+ for logoItem in logo_files:
|
|
|
+ logo_list.append(f"{logo_dir}{logoItem}")
|
|
|
+ return {"code": 0, "msg": "操作成功", "data": logo_list}
|
|
|
|
|
|
|
|
|
@app.post("/add_logo", description="添加logo")
|
|
|
def add_logo(params: LogoParams):
|
|
|
- logo_path = params.logo_path
|
|
|
+ logo_path = params.logo_path.replace("\\", "/")
|
|
|
session = SqlQuery()
|
|
|
sysConfig = CRUD(SysConfigs)
|
|
|
item = sysConfig.read(session, conditions={"key": "logo_configs"})
|
|
|
if item == None:
|
|
|
item = insertEmptyLogoList(session)
|
|
|
- logo_list = json.loads(item.value)
|
|
|
if os.path.isfile(logo_path) == False:
|
|
|
return {"code": 1, "msg": "logo文件不存在", "data": None}
|
|
|
logo_dir = "{}/data/logo/".format(os.getcwd()).replace("\\", "/")
|
|
|
@@ -618,29 +626,41 @@ def add_logo(params: LogoParams):
|
|
|
fpath, fname = os.path.split(logo_path)
|
|
|
logo_path_info = logo_dir + fname
|
|
|
shutil.copy(logo_path, logo_path_info) # 复制文件
|
|
|
- if len(logo_list)>0:
|
|
|
- for item in logo_list:
|
|
|
- if logo_path_info == item:
|
|
|
- continue
|
|
|
- logo_list.append(logo_path_info)
|
|
|
- else:
|
|
|
- logo_list.append(logo_path_info)
|
|
|
- data = {"key": "logo_configs", "value": json.dumps(logo_list)}
|
|
|
- sysConfig.updateConditions(session, conditions={"key": "logo_configs"}, **data)
|
|
|
+ logo_files = os.listdir(logo_dir)
|
|
|
+ logo_list = []
|
|
|
+ for logoItem in logo_files:
|
|
|
+ logo_list.append(f"{logo_dir}{logoItem}")
|
|
|
return {
|
|
|
"code": 0,
|
|
|
"msg": "",
|
|
|
- "data": {"logo":logo_path_info},
|
|
|
+ "data": {"logo": logo_path_info},
|
|
|
}
|
|
|
|
|
|
@app.post("/delete_logo", description="删除logo")
|
|
|
def delete_logo(params: LogoParamsupdate):
|
|
|
- session = SqlQuery()
|
|
|
- sysConfig = CRUD(SysConfigs)
|
|
|
- model = sysConfig.read(session, conditions={"key": "logo_configs"})
|
|
|
- if model == None:
|
|
|
- insertEmptyLogoList(session)
|
|
|
- # 走编辑逻辑
|
|
|
- kwargs = params.__dict__
|
|
|
- save_device_config = sysConfig.updateConditions(session, conditions={"key": "logo_configs"}, **kwargs)
|
|
|
- return {"code": 0, "msg": "操作成功", "data": save_device_config}
|
|
|
+ logo_path = params.path
|
|
|
+ if os.path.isfile(logo_path) == False:
|
|
|
+ return {"code": 1, "msg": "logo文件不存在", "data": None}
|
|
|
+ os.remove(logo_path)
|
|
|
+ logo_dir = "{}/data/logo/".format(os.getcwd()).replace("\\", "/")
|
|
|
+ check_path(logo_dir)
|
|
|
+ logo_files = os.listdir(logo_dir)
|
|
|
+ logo_list = []
|
|
|
+ for logoItem in logo_files:
|
|
|
+ logo_list.append(f"{logo_dir}{logoItem}")
|
|
|
+ return {"code": 0, "msg": "操作成功", "data": logo_list}
|
|
|
+
|
|
|
+
|
|
|
+@app.post("/close_other_window", description="关闭窗口")
|
|
|
+def close_other_window():
|
|
|
+ hwnd_list = []
|
|
|
+ def callback(hwnd, _):
|
|
|
+ title = GetWindowText(hwnd)
|
|
|
+ if title == "digiCamControl by Duka Istvan":
|
|
|
+ hwnd_list.append(hwnd)
|
|
|
+ EnumWindows(callback, None)
|
|
|
+ if hwnd_list:
|
|
|
+ hwnd = hwnd_list[0]
|
|
|
+ win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0)
|
|
|
+ return {"code": 0, "msg": "关闭成功", "data": {"status":True}}
|
|
|
+ return {"code": 0, "msg": "关闭失败", "data": {"status": False}}
|