前言
需要在抖音平台上频繁发布多个作品时,重复的操作可能会变得繁琐且耗时。为了提高效率,自动化这些操作是一个明智的选择。
一、效果
先展示一下效果。
下面是自动打开网页以及上传视频的效果。可以准确得自动模拟用户上传视频的操作以及步骤。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KmMpCiTg-1721136617608)(https://i-blog.csdnimg.cn/direct/ded3343b874344c6988baffd5e7af61a.gif)]下面是自动输入标题以及添加对应的话题的效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpQvg7qz-1721136617609)(https://i-blog.csdnimg.cn/direct/43e5fe3eeb3b483b9bc5963a061a8cc2.gif)]
下面是定时发布的效果演示,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ffuu1AvT-1721136617610)(https://i-blog.csdnimg.cn/direct/31c552ffdb534e97b124ed5ab2dcbe05.gif)]
二、原理说明
AutoHandleUtil类是自动化操作的核心,它能够帮助我们执行一系列复杂的用户界面操作,用于自动化处理用户界面交互任务。它通过模拟鼠标和键盘操作,实现对应用程序的控制。在AutoHandleUtil类中,pyperclip和pyautogui是两个核心的Python库,它们提供了自动化操作的基础功能。
AutoHandleUtil类的作用与原理
AutoHandleUtil
是一个Python类,用于自动化处理用户界面交互任务。它通过模拟鼠标和键盘操作,实现对应用程序的控制。以下是它的工作原理和主要功能:
- 动作定义:通过枚举
ActionType
定义支持的操作类型,如打开网页、休眠、鼠标操作等。 - 动作序列:用户通过调用不同的方法,将操作添加到动作序列中。
- 动作执行:执行动作序列,完成自动化任务。
代码解析
首先枚举不同的动作类型,这些动作分别有鼠标,滚轮,输入文字,键盘以及打开网页和睡眠。这几部分组成。
class ActionType(Enum):
# 定义支持的动作类型
OPEN_WEB = auto()
SLEEP = auto()
MOUSE = auto()
ROLL = auto()
TEXT = auto()
KEYBOARD = auto()
下面举例鼠标动作的添加以及执行方法
动作鼠标添加方法
def add_mouse_action(self, action, control_logo_path="no_logo", offset_x=0, offset_y=0, confidence=0.9, comment="no comment"):
# 添加鼠标动作到动作序列
self.actions_list.append({
"type": ActionType.MOUSE,
"params": {
"control_logo": control_logo_path,
"offset_x": offset_x,
"offset_y": offset_y,
"confidence": confidence,
"action": action
}
})
动作鼠标执行方法
def mouse_handle(self, params):
control_logo_path = params["control_logo"]
offset_x =params["offset_x"]
offset_y = params["offset_y"]
confidence = params["confidence"]
# 将文本内容复制到剪贴板
location = pyautogui.position()
if control_logo_path!="no_logo":
print("!=no_logo")
location = self.find_control_logo(control_logo_path, confidence)
x, y = pyautogui.center(location)
else:
# 获取当前鼠标的位置
x, y = pyautogui.position()
self.logger.info(f"元素位置: (x={x}, y={y})")
if params["action"] == "click":
pyautogui.click(x+offset_x, y + offset_y)
elif params["action"] == "move":
pyautogui.moveTo(x+offset_x, y + offset_y)
elif params["action"] == "double_click":
pyautogui.doubleClick(x + offset_x, y + offset_y)
elif params["action"] == "roll":
pyautogui.moveTo(x+offset_x, y + offset_y)
for i in range(params["roll_time"]):
# 随机生成滚动距离
scroll_distance = params["roll_length"]
# 向下滚动鼠标滚轮
pyautogui.scroll(-scroll_distance, x, y)
# 随机生成滚动间隔时间
time.sleep(1)
else:
self.logger.info(f"未知动作")
动作执行方法
def execute_actions(self):
"""
根据输入的字典执行一系列动作,包括点击、移动、双击和等待
:param actions_dict: 一个字典,包含动作指令、对应的图像路径和可选的等待时间
"""
for action in self.actions_list:
action_type = action["type"]
params = action["params"]
if action_type == ActionType.SLEEP:
time.sleep(params["sleep"])
elif action_type == ActionType.OPEN_WEB:
webbrowser.open_new_tab(params["web_url"])
elif action_type == ActionType.MOUSE:
self.mouse_handle(params)
elif action_type == ActionType.ROLL:
self.roll_handle(params)
elif action_type == ActionType.TEXT:
self.text_handle(params)
elif action_type == ActionType.KEYBOARD:
self.keyboard_handle(params)
else:
self.logger.error(f"Unknown action type: {action_type}")
# 如果需要在每个动作之后等待,可以取消下面注释
# time.sleep(sleep_time)
# ... 其他动作类型的执行逻辑
源码
想要完整代码或者帮忙部署的可以联系我