使用pyautogui流水线式自动发抖音视频【抖音作品批量定时一键发布】

前言

需要在抖音平台上频繁发布多个作品时,重复的操作可能会变得繁琐且耗时。为了提高效率,自动化这些操作是一个明智的选择。

一、效果

先展示一下效果。
下面是自动打开网页以及上传视频的效果。可以准确得自动模拟用户上传视频的操作以及步骤。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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类,用于自动化处理用户界面交互任务。它通过模拟鼠标和键盘操作,实现对应用程序的控制。以下是它的工作原理和主要功能:

  1. 动作定义:通过枚举ActionType定义支持的操作类型,如打开网页、休眠、鼠标操作等。
  2. 动作序列:用户通过调用不同的方法,将操作添加到动作序列中。
  3. 动作执行:执行动作序列,完成自动化任务。

代码解析

首先枚举不同的动作类型,这些动作分别有鼠标,滚轮,输入文字,键盘以及打开网页和睡眠。这几部分组成。

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)
        # ... 其他动作类型的执行逻辑

源码

想要完整代码或者帮忙部署的可以联系我
在这里插入图片描述

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值