作品展示:
背景需求:
需要将公众号上的照片打包下载,图片按照01-50的方式排序
手动下载要点开大图
右击另存更高文件名-保存
点击下一张
循环以上动作。
我感觉手动下载都是重复的,如果30张图片,就要重复“箭头-右键-另存-输入名称-保存”的动作30次,特别是更改01、02、03的编号,容易记错。
所以我编写了一个UIBOT自动下载公众号程序的代码
代码设计:
以下是UIBOT代码(这里选择C++代码)
Dim sRet,temp,sPath,sText,bRet,objPoint
Rem 找到第一张图片并点击打开
Rem 另存一次指定路径
Rem 右箭头换下一张,准备下载
Rem 预估张数,宁多不要少
name=Dialog.InputBox("文件夹名称","Laiye Automation","",false)
File.CreateFolder('''C:\Users\jg2yXRZ\OneDrive\桌面\'''&name)
sPath = File.ParentPath('''C:\Users\jg2yXRZ\OneDrive\桌面\'''&name)
TracePrint(sPath+'\\'+name)
路径 = sPath+'\\'+name
For a = 0 To 0 step 1
Mouse.Move(954, 519, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("right", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Move(1000, 569, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("left", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Action(@ui"框线项目_21","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 100, "iDelayBefore": 100, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})
Delay(1000)
Mouse.Move(782, 215, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("left", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Keyboard.Input(路径,{"iDelayAfter": 100, "iDelayBefore": 100, "sSimulate": "message"})
Keyboard.Press("Enter", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})
Delay(1000)
Keyboard.InputText(@ui"窗口_微信图片_20240306171212.png1","000",true,20,10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 500, "bSetForeground": true, "sSimulate": "message", "bValidate": false, "bClickBeforeInput": false})
Delay(1000)
Mouse.Action(@ui"窗口_保存(S)2","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 100, "iDelayBefore": 100, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})
Keyboard.Press("Right", "press", [],{"iDelayAfter": 100, "iDelayBefore": 100, "sSimulate": "simulate"})
Next
For i = 1 To 100 step 1
Mouse.Move(954, 519, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("right", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Move(1000, 569, false,{"iDelayAfter": 100, "iDelayBefore": 100})
Mouse.Click("left", "click", [],{"iDelayAfter": 100, "iDelayBefore": 100})
Delay(1000)
Keyboard.Input(Format("%03d",i),{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "message"})
Delay(1000)
Mouse.Action(@ui"窗口_保存(S)2","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 100, "iDelayBefore": 100, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})
Keyboard.Press("Right", "press", [],{"iDelayAfter": 100, "iDelayBefore": 100, "sSimulate": "simulate"})
Next
视频展示:
uibot 单张下载微信公众号图片
说明:
1、下载的图片包含公众号模板里面的图片,需要手动删除
2、删除图片后,文件编号就不是连贯的
3、使用替换文件名的方法,更改序号。
''''
下载公众号图片,所有图片按照文件名改成01 02、03
作者:AI对话大师
时间:2024月3月7日
'''
import os
import shutil
folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\雷锋纪念日'
file_list = os.listdir(folder_path)
image_list = [file for file in file_list if file.lower().endswith(('.jpg', '.png'))]
for i, image_file in enumerate(image_list):
new_file_name = f"{str(i+1).zfill(2)}{os.path.splitext(image_file)[1]}"
old_file_path = os.path.join(folder_path, image_file)
new_file_path = os.path.join(folder_path, new_file_name)
shutil.move(old_file_path, new_file_path)
打包发送
把公众号的信息(文字+图片)打包上传
感悟:
1、下载时间比较长:
公众号一共下载了50张图片(包括模板里的png和GIF),删除不需要的插图后,还有20张。下载时间5分钟。
2、确保了图片顺序:
UIBOT下载确保了每张图片按照顺序下载
3、编号让重复图片也能下载
当网页中有相同的图片(主要是背景模板里面的装饰插图),用001、002的编号,可以让相同图片也能顺利想在,不会提示“图片已存在”。
4、使用Python为图片重新编号:
手动删除下载图片中的重复背景插入后,剩余图片的编号不连贯,使用Python为已经排序的图片重新设定01、02、03的编号。实现最终的“公众号图文打包归档”的需求