diff --git a/BaiHu/Config.ini b/BaiHu/Config.ini index 5d01a1ff..1178e016 100644 --- a/BaiHu/Config.ini +++ b/BaiHu/Config.ini @@ -24,3 +24,6 @@ web_url = http://127.0.0.1:9000 ; 处理机编号 machine_id = 4090D_Dsideal +[monitor] +; 将剪映运行在第几个显示器上面 +working_id = 2 \ No newline at end of file diff --git a/BaiHu/MV.py b/BaiHu/MV.py index ae01ca4a..24478e49 100644 --- a/BaiHu/MV.py +++ b/BaiHu/MV.py @@ -4,23 +4,27 @@ import subprocess import time import uuid import pyautogui + +from Util import ConfigUtil from Util.Win32Util import * import pyperclip - # pip install pyautogui # pip install pywin32 # pip install pyperclip # PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen +# pip install screeninfo +from screeninfo import get_monitors + + def open_jian_ying(): # 关闭剪映 subprocess.Popen(['taskkill', '/F', '/IM', 'JianyingPro.exe'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) - # 清时剪映的草稿区 + # 清理剪映的草稿区 remove_dir_contents(JianYingCaoGao) - time.sleep(1) # 打开剪眏 subprocess.Popen([jianYingExePath]) # 检查是不是已经正确打开了 @@ -34,17 +38,22 @@ def open_jian_ying(): if found: break else: - printf('waiting...') - + printf('Loading...') time.sleep(1) + # 激活剪映为当前操作窗口 - time.sleep(3) + time.sleep(2) hwnd = x[0] + # 显示为当前窗口 win32gui.SetForegroundWindow(hwnd) - # 破解剪映 - crack_jian_ying() + # 移动窗口到指定的显示器左上角上去 + win32gui.SetWindowPos(hwnd, win32con.HWND_TOP, wm.x, wm.y, 0, 0, win32con.SWP_NOSIZE) # 最大化 win32gui.ShowWindow(hwnd, win32con.SW_SHOWMAXIMIZED) + + exit(0) + # 破解剪映 + crack_jian_ying() return hwnd @@ -68,7 +77,9 @@ def crack_jian_ying(): is_running = True if is_running: + # wm.x win32gui.SetForegroundWindow(hwnd) + pyautogui.press('enter') time.sleep(1) pyautogui.press('enter') @@ -349,14 +360,31 @@ def run_switch(hwnd, source_img, cartoon_img): if __name__ == '__main__': + # 配置文件 + config = ConfigUtil.getConfig() + # 剪映运行的显示器编号 + working_id = int(config['monitor']['working_id']) + # 显示器个数检查 + monitors = get_monitors() + if len(monitors) < working_id: + printf('显示器数量小于配置的显示器编号') + exit(0) + + # 坐标测试的屏幕分辨率:1680*1050 + wm = monitors[working_id - 1] + # print(wm.width, wm.height, wm.x, wm.y) + + # 显示器的分辨率和开始的位置 + # for i, monitor in enumerate(monitors): + # print("显示器", i + 1, "分辨率:", monitor.width, "x", monitor.height) + # print("显示器", i + 1, "位置:", monitor.x, ",", monitor.y) + # 获取当前脚本文件的绝对路径 script_path = os.path.abspath(__file__) # 获取脚本文件所在的磁盘分区 # 这将返回脚本文件所在的完整路径,包括磁盘分区 disk_partition = os.path.splitdrive(script_path)[0] - print("当前脚本所在的磁盘分区是:", disk_partition) - # 清时剪映的草稿区 JianYingCaoGao = r'C:\Users\Administrator\AppData\Local\JianyingPro\User Data\Projects\com.lveditor.draft' # 打开剪眏 @@ -376,19 +404,19 @@ if __name__ == '__main__': # 操作类型,1:生成MV,2:生成图片切换 type_id = 1 - - # 生成MV - if type_id == 1: - # 用户上传了多少张图片 - imgCount = count_files(imgPath) - 1 # 因为有一个是MP3 - # 拷贝MP3文件到imgPath目录 - shutil.copy(mp3, imgPath) - videoName = run_once(hwnd, imgPath, imgCount) + '.mp4' - print(os.path.join(JiangYingOutPath, videoName)) - - # 生成图片切换 - if type_id == 2: - sourceImg = disk_partition + r'\KeCheng\BaiHu\TestImage\Wife\wife.jpg' - CartoonImg = disk_partition + r'\KeCheng\BaiHu\TestImage\Wife\3.png' - videoName = run_switch(hwnd, sourceImg, CartoonImg) + '.mp4' - print(os.path.join(JiangYingOutPath, videoName)) + # + # # 生成MV + # if type_id == 1: + # # 用户上传了多少张图片 + # imgCount = count_files(imgPath) - 1 # 因为有一个是MP3 + # # 拷贝MP3文件到imgPath目录 + # shutil.copy(mp3, imgPath) + # videoName = run_once(hwnd, imgPath, imgCount) + '.mp4' + # print(os.path.join(JiangYingOutPath, videoName)) + # + # # 生成图片切换 + # if type_id == 2: + # sourceImg = disk_partition + r'\KeCheng\BaiHu\TestImage\Wife\wife.jpg' + # CartoonImg = disk_partition + r'\KeCheng\BaiHu\TestImage\Wife\3.png' + # videoName = run_switch(hwnd, sourceImg, CartoonImg) + '.mp4' + # print(os.path.join(JiangYingOutPath, videoName))