|
@@ -0,0 +1,183 @@
|
|
|
+import hug
|
|
|
+from bottle import route, run
|
|
|
+import pyautogui
|
|
|
+import random
|
|
|
+import time
|
|
|
+import os
|
|
|
+import pythoncom
|
|
|
+import win32gui, win32con, win32process
|
|
|
+import pyperclip
|
|
|
+# import psutil
|
|
|
+import urllib.parse
|
|
|
+import autoit
|
|
|
+import datetime
|
|
|
+# import subprocess
|
|
|
+
|
|
|
+hug.API(__name__).http.output_format = hug.output_format.json
|
|
|
+
|
|
|
+exePath = r"C:\Program Files (x86)\Kingsoft\WPS Office\11.8.2.12085\office6\et"
|
|
|
+
|
|
|
+@hug.get('/smm_chemical/server')
|
|
|
+def smm_server():
|
|
|
+ return 1
|
|
|
+
|
|
|
+# 顶部有色按钮的x,y位置
|
|
|
+smm_button_x = 897
|
|
|
+smm_button_y = 53
|
|
|
+
|
|
|
+# 中间更新数据下拉框按钮的x,y位置
|
|
|
+smm_refresh_select_button_x = 212
|
|
|
+smm_refresh_select_button_y = 119
|
|
|
+
|
|
|
+# 中间更新数据按钮的x,y位置
|
|
|
+smm_refresh_button_x = 232
|
|
|
+smm_refresh_button_y = 178
|
|
|
+
|
|
|
+# 超时时间,默认15s
|
|
|
+timeout_time = 15
|
|
|
+
|
|
|
+@hug.get('/smm_chemical/refresh')
|
|
|
+def smm_refresh(file_path):
|
|
|
+ screen_width, screen_height = pyautogui.size()
|
|
|
+ print("当前时间:{};当前屏幕分辨率:{} x {}".format(datetime.datetime.now(), screen_width, screen_height))
|
|
|
+
|
|
|
+ pyautogui.FAILSAFE = False
|
|
|
+
|
|
|
+ file_path = file_path.replace('"', '')
|
|
|
+
|
|
|
+ # 显示桌面
|
|
|
+ pyautogui.hotkey('win', 'd')
|
|
|
+
|
|
|
+ try:
|
|
|
+ file_path = urllib.parse.unquote(file_path)
|
|
|
+ fileFullPath = file_path
|
|
|
+
|
|
|
+ # print("full_path start")
|
|
|
+ fileFullPath = fileFullPath.replace("\\\\", "\\")
|
|
|
+
|
|
|
+ print("文件路径:", fileFullPath)
|
|
|
+
|
|
|
+ if not os.path.exists(fileFullPath):
|
|
|
+ print("文件不存在")
|
|
|
+ return
|
|
|
+
|
|
|
+ if os.path.exists(fileFullPath) and ".xlsx" in fileFullPath \
|
|
|
+ and fileFullPath.find("~$") < 0 \
|
|
|
+ and fileFullPath.find("template") < 0:
|
|
|
+
|
|
|
+ # 获取文件名和扩展名
|
|
|
+ file_name, file_ext = os.path.splitext(os.path.basename(fileFullPath))
|
|
|
+ file_name_ext = file_name + file_ext
|
|
|
+ # print(file_name_ext)
|
|
|
+
|
|
|
+ try:
|
|
|
+
|
|
|
+ # 启动程序
|
|
|
+ code = exePath + " " + fileFullPath
|
|
|
+ # print(code)
|
|
|
+ autoit.run(code)
|
|
|
+ autoit.win_wait_active(file_name_ext, timeout=20) # 等待窗口激活
|
|
|
+ autoit.win_move(file_name_ext, 0, 0, 1024, 768)
|
|
|
+ # autoit.win_move(file_name_ext, 0, 0, 1920, 1080)
|
|
|
+
|
|
|
+ # print("监听成功了")
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ print("监听", fileFullPath, "失败:", e)
|
|
|
+
|
|
|
+ ## 失败的话,截图记录下原因
|
|
|
+ screenshot = pyautogui.screenshot()
|
|
|
+ imgPath = datetime.datetime.now().strftime("%Y%m%d%H%M%S")+"_screenshot_img.png"
|
|
|
+ screenshot.save(imgPath)
|
|
|
+
|
|
|
+ hwnd = win32gui.GetForegroundWindow()
|
|
|
+ found_title = win32gui.GetWindowText(hwnd)
|
|
|
+ print("当前窗口名称:", found_title)
|
|
|
+ if found_title == "":
|
|
|
+ print("窗口未打开")
|
|
|
+ return
|
|
|
+ if found_title.startswith(file_name_ext) == False:
|
|
|
+ print("当前窗口与excel不一致,当前窗口:", found_title, ";excel:", file_name_ext)
|
|
|
+ return
|
|
|
+ autoit.win_move_by_handle(hwnd, 0, 0, 1024, 768)
|
|
|
+ # autoit.win_move_by_handle(hwnd, 0, 0, 1920, 1080)
|
|
|
+
|
|
|
+ # 等待自动刷新结束
|
|
|
+ time.sleep(15)
|
|
|
+
|
|
|
+ # 保存
|
|
|
+ pyautogui.hotkey('ctrl', 's')
|
|
|
+ time.sleep(1)
|
|
|
+
|
|
|
+ # 关闭当前excel
|
|
|
+ pyautogui.hotkey('ctrl', 'w')
|
|
|
+
|
|
|
+ return True
|
|
|
+
|
|
|
+ # 屏幕最大化
|
|
|
+ hwnd = win32gui.GetForegroundWindow()
|
|
|
+ win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
|
|
|
+ time.sleep(1)
|
|
|
+
|
|
|
+ # 随机2-3次点击 单元格区域
|
|
|
+ r = random.randint(2, 3)
|
|
|
+ for i in range(r):
|
|
|
+ point_x = random.randint(511, 1745)
|
|
|
+ point_y = random.randint(282, 791)
|
|
|
+ print("随机点击", i + 1, "下")
|
|
|
+ pyautogui.moveTo(point_x, point_y, 0.5)
|
|
|
+ pyautogui.click()
|
|
|
+
|
|
|
+ # 随机停留几秒
|
|
|
+ r = random.randint(1, 2)
|
|
|
+ time.sleep(r)
|
|
|
+
|
|
|
+ # 点击 SMM DATA PRO 按钮
|
|
|
+ # point_x = 541
|
|
|
+ # point_y = 63
|
|
|
+ pyautogui.moveTo(smm_button_x, smm_button_y, 0.5)
|
|
|
+ pyautogui.click()
|
|
|
+ time.sleep(1)
|
|
|
+
|
|
|
+ # 点击 刷新下拉框 按钮
|
|
|
+ # point_x = 210
|
|
|
+ # point_y = 142
|
|
|
+ pyautogui.moveTo(smm_refresh_select_button_x, smm_refresh_select_button_y, 0.5)
|
|
|
+ pyautogui.click()
|
|
|
+ time.sleep(1)
|
|
|
+
|
|
|
+ # 点击 全部工作表 按钮
|
|
|
+ print("开始刷新了")
|
|
|
+ # point_x = 240
|
|
|
+ # point_y = 233
|
|
|
+ pyautogui.moveTo(smm_refresh_button_x, smm_refresh_button_y, 0.5)
|
|
|
+ pyautogui.click()
|
|
|
+ time.sleep(0.5)
|
|
|
+
|
|
|
+ # 点击完刷新按钮后,移开鼠标
|
|
|
+ pyautogui.moveTo(622, 300, 0.5)
|
|
|
+
|
|
|
+ # 等待刷新结束
|
|
|
+ time.sleep(10)
|
|
|
+
|
|
|
+ # 保存
|
|
|
+ pyautogui.hotkey('ctrl', 's')
|
|
|
+ time.sleep(1)
|
|
|
+
|
|
|
+ # 关闭当前excel
|
|
|
+ pyautogui.hotkey('ctrl', 'w')
|
|
|
+
|
|
|
+ return True
|
|
|
+ else:
|
|
|
+ print("ext err:" + fileFullPath)
|
|
|
+
|
|
|
+ return True
|
|
|
+ except Exception as e:
|
|
|
+ print("Exception:")
|
|
|
+ print(str(e))
|
|
|
+ return False
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ app = __hug__.http.server()
|
|
|
+ run(app=app, reloader=True, port=7007)
|