diff --git a/app/blueprints/__pycache__/brand.cpython-311.pyc b/app/blueprints/__pycache__/brand.cpython-311.pyc index 8731fea..d6c2ef1 100644 Binary files a/app/blueprints/__pycache__/brand.cpython-311.pyc and b/app/blueprints/__pycache__/brand.cpython-311.pyc differ diff --git a/app/blueprints/__pycache__/brand.cpython-39.pyc b/app/blueprints/__pycache__/brand.cpython-39.pyc index bac8622..fff3b6d 100644 Binary files a/app/blueprints/__pycache__/brand.cpython-39.pyc and b/app/blueprints/__pycache__/brand.cpython-39.pyc differ diff --git a/app/blueprints/communication.py b/app/blueprints/communication.py new file mode 100644 index 0000000..7d85a76 --- /dev/null +++ b/app/blueprints/communication.py @@ -0,0 +1,18 @@ +from queue import Empty + +from flask import Blueprint, jsonify + +from config import JSON_TASK_QUEUE + + +communication_bp = Blueprint('communication', __name__) + + +@communication_bp.route('/api/amazon/del_brand', methods=['GET', 'POST']) +def del_brand(): + """返回队列中的一个元素;队列为空时返回空提示。""" + try: + item = JSON_TASK_QUEUE.get_nowait() + return jsonify({'success': True, 'data': item}) + except Empty: + return jsonify({'success': False, 'message': '队列为空', 'data': None}) diff --git a/app/config.py b/app/config.py index fea1dec..bfdfd2a 100644 --- a/app/config.py +++ b/app/config.py @@ -5,6 +5,7 @@ STITCH_WORKFLOW_ID = "7608813873483300907" import os from dotenv import load_dotenv +from queue import Queue load_dotenv() _base_url = os.getenv("base_url","http://159.75.121.33:15124") @@ -38,11 +39,21 @@ os.environ['OSS_ACCESS_KEY_SECRET'] = accessKeySecret os.environ['SECRET_KEY'] = "ddffc7c1d02121d9554d7b080b2511b6" -debug = False -version = "1.0.17" +debug = True +version = "1.0.13" APP_UPDATE_URL = f"{_base_url}/api/version/latest" # 检测更新接口地址,返回 { "file_url": "...", "version": "x.x.x" } os.environ['APP_VERSION'] = version os.environ['APP_UPDATE_URL'] = APP_UPDATE_URL +# 队列 +JSON_TASK_QUEUE = Queue() + + + + + + + + diff --git a/app/main.py b/app/main.py index e13472b..2fa401f 100644 --- a/app/main.py +++ b/app/main.py @@ -1,7 +1,7 @@ """ 基于 pywebview 实现的跨平台 UI,需先登录方可使用 """ -from config import cache_path,debug,version,JAVA_API_BASE +from config import cache_path,debug,version,JAVA_API_BASE,JSON_TASK_QUEUE import datetime import json import sys @@ -234,6 +234,19 @@ class WindowAPI: except Exception as e: return {'success': False, 'error': str(e)} + def enqueue_json(self, data): + """保存任务到队列""" + try: + payload = data + if isinstance(data, str): + payload = json.loads(data) + if not isinstance(payload, (dict, list)): + return {'success': False, 'error': '仅支持 JSON 对象或数组'} + JSON_TASK_QUEUE.put(payload) + return {'success': True, 'queue_size': JSON_TASK_QUEUE.qsize()} + except Exception as e: + return {'success': False, 'error': str(e)} + def _select_folder_win32(): """Windows: 用 ctypes 调用系统文件夹选择对话框,打包成 exe 后也能正常弹窗(不依赖 tkinter)""" try: @@ -279,24 +292,6 @@ def _select_folder_win32(): return '' -# def _select_folder_tk(): -# """使用 tkinter 选择文件夹(在非 Windows 或作为后备)""" -# try: -# -# root = tkinter.Tk() -# root.withdraw() -# root.attributes('-topmost', True) -# path = filedialog.askdirectory(title='选择保存图片的文件夹') -# try: -# root.destroy() -# except Exception: -# pass -# return path if path else '' -# except Exception as e: -# print("tkinter 选择文件夹失败:", e) -# return '' - - def _select_folder_tk(): import tkinter as tk from tkinter import filedialog @@ -323,10 +318,6 @@ def _select_folder_tk(): def select_folder(): """弹窗选择文件夹,返回路径(空字符串表示取消)。Windows 打包 exe 时优先用系统 API 避免 tkinter 不弹窗。""" - # if sys.platform == 'win32': - # path = _select_folder_win32() - # if path: - # return path return _select_folder_tk() @@ -356,9 +347,9 @@ def main(): ) api = WindowAPI(window) window.expose(api.close, api.minimize, api.maximize, api.toggle_maximize, generate_images, api.save_image, api.save_image_to_folder, api.select_folder, api.select_brand_xlsx_files, api.select_brand_folder, - api.save_file_from_url, api.save_template_xlsx,api.save_template_zip,api.upload_file_to_java) + api.save_file_from_url, api.save_template_xlsx,api.save_template_zip,api.upload_file_to_java,api.enqueue_json) webview.start( - debug=False, + debug=True, storage_path=cache_path, private_mode=False )