自动刷视频的小工具

admin 2024年2月4日09:47:04评论25 views字数 2434阅读8分6秒阅读模式

接到一个需求,要求能自动点击视频播放键,当视频停止播放后接着让其播放。

这种与场景强相关的需求,需要看视频网站的具体行为。有的会自动检测活跃度,如果鼠标没反应播放就会暂停。有的会检测鼠标位置,如果脱离播放框就会暂停。还要看视频上一级播放完后是否会自动播放下一级。

研究完视频网站的播放行为,下一步就可以进行实际测试了。比如视频的行为是播完一级后会跳至下一级并暂停。此时就要决定什么时候点播放,如果没播完点击动作会将视频暂停,只有在暂停时才需要点播放。

将问题拆解:

  • 如何查询当前鼠标的坐标

  • 检查视频当前是播放状态还是暂停状态

  • 如何触发鼠标点击动作

首先需要搞清楚鼠标的坐标,以下 python 程序可以实时显示当前鼠标坐标:

自动刷视频的小工具

首先定位视频中的播放按钮坐标,后续根据坐标执行点击动作。查坐标的代码如下:

from pynput import mouseimport keyboarddef on_move(x, y):    print(f"当前鼠标位置:x={x}, y={y}")# 创建鼠标监听器listener = mouse.Listener(on_move=on_move)# 启动监听线程listener.start()try:    # 等待Ctrl+C按下    keyboard.wait("ctrl+c")except KeyboardInterrupt:    passfinally:    # 停止鼠标监听器    listener.stop()    listener.join()

使用前需要安装 pynput 和 keyboard 模块:

pip install pynputpip install keyboard

定位坐标后,下一步是检查播放页面是暂停状态还是播放状态。这里用到的方法是比较指定区域的图像是静止画面还是动态画面。通过前后图像对比,如果相同则是静止画面,处于暂停状态,相反则是播放状态。

程序运行前需要提供播放键的坐标,供鼠标点击和比较画面用,这里是视频的正中间的位置。程序的命令行界面如下:

自动刷视频的小工具

自动播放视频的代码为:

from PIL import ImageGrabimport numpy as npimport timeimport pyautoguiimport argparsedefault_x, default_y = 659, 353x_coordinate = default_xy_coordinate = default_y width = 50height = 50def click_one():    pyautogui.moveTo(x_coordinate, y_coordinate)    pyautogui.click()def capture_screen(x, y, width, height):    # 捕获屏幕上指定坐标范围的截图    screen = ImageGrab.grab(bbox=(x, y, x + width, y + height))    return np.array(screen)def images_are_equal(image1, image2):    # 比较两个图像是否相似    difference = np.sum(np.abs(image1 - image2))    return difference < 1000  # 调整阈值以适应你的需求def is_screen_static(x, y, width, height, check_interval=1, max_checks=10):    previous_image = capture_screen(x, y, width, height)    for _ in range(max_checks):        time.sleep(check_interval)        current_image = capture_screen(x, y, width, height)        if not images_are_equal(previous_image, current_image):            return False        previous_image = current_image    return Truedef main():    global x_coordinate, y_coordinate    parser = argparse.ArgumentParser(description='鼠标监听脚本')    parser.add_argument('-x', '--x', type=int, default=default_x, help='鼠标点击的 x 坐标值,默认为659')    parser.add_argument('-y', '--y', type=int, default=default_y, help='鼠标点击的 y 坐标值,默认为353')    args = parser.parse_args()    x_coordinate = args.x    y_coordinate = args.y    while True:        if is_screen_static(x_coordinate, y_coordinate, width, height):            print("The specified screen area is static.")            print(f"当前坐标:{x_coordinate} {y_coordinate}")            click_one()        else:            print("The specified screen area is not static.")            pass        print('sleep...')        time.sleep(30)if __name__ == '__main__':    main()

最后使用 pyinstaller 将代码编译为 exe 可执行文件,后面就可以交付使用了,在对方电脑上不用安装 python 运行环境。以上代码依赖的模块为:

pip install pillowpip install numpy pip install pyautogui

pyinstaller 打包命令为:

pyinstaller --onefile auto.py

全文完。

如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。

原文始发于微信公众号(生有可恋):自动刷视频的小工具

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月4日09:47:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   自动刷视频的小工具http://cn-sec.com/archives/2466651.html

发表评论

匿名网友 填写信息