python+adb命令实现自动刷视频脚本案例

1. 前言

随着网络流量的不断增长,短视频、直播等新媒体形态已成为人们的日常消遣。而约束观看体验的广告,成为了用户的一大痛点。因此,本文将结合ADB命令和Python脚本,带领读者实现自动刷视频。

2. ADB介绍

2.1 ADB是什么

ADB全称为Android Debug Bridge,是安卓开发工具包(SDK)中的一个命令工具,可用于和连接在PC端的安卓设备进行通信,包括启动应用,安装应用,拷贝文件等。

2.2 ADB命令

ADB具有丰富的命令行功能,常用命令如下:

adb devices:列出已连接设备

adb shell:进入设备命令行模式

adb push:将本地文件推送到设备上

adb pull:从设备上导出文件到本地

adb install:安装应用

adb uninstall:卸载应用

adb logcat:查看设备日志

adb shell input tap x y:模拟屏幕点击事件

adb shell input swipe x1 y1 x2 y2 [duration]:模拟屏幕滑动事件

2.3 ADB连接设备

在使用ADB命令前,需要先连接设备。连接方式如下:

adb devices

运行以上命令,将会列出所有已连接的设备。如下图所示:

3. Python实现自动刷视频

3.1 环境准备

在使用Python脚本前,需要安装依赖的Python库以及ADB工具。ADB工具安装可参考官方文档,以下为常用Python库的安装方法。

pip install opencv-python

pip install numpy

3.2 实现自动刷视频脚本

以下为利用ADB命令和Python脚本实现自动刷视频的详细流程:

打开APP

以下为Python实现方式:

import os

def open_app(app_name):

os.system("adb shell am start -n "+app_name)

模拟屏幕滑动事件

以下为Python实现方式:

def swipe(start_x, start_y, end_x, end_y):

cmd = "adb shell input swipe " + str(start_x) + " " + str(start_y) + " " + str(end_x) + " " + str(

end_y) + " 200"

os.system(cmd)

模拟屏幕点击事件

以下为Python实现方式:

def click(x, y):

cmd = "adb shell input tap " + str(x) + " " + str(y)

os.system(cmd)

检测广告是否结束

以下为Python实现方式:

def is_ad_over():

screen = cv2.imread("screenshot.jpg")

gray = cv2.cvtColor(screen, cv2.COLOR_BGR2GRAY)

template = cv2.imread("ad_template.jpg", cv2.IMREAD_GRAYSCALE)

res = cv2.matchTemplate(gray, template, cv2.TM_CCOEFF_NORMED)

if (res > 0.8).any():

return False

else:

return True

自动刷视频主程序

以下为Python实现方式:

import time

import cv2

import numpy as np

# 视频坐标,根据实际情况调整

video_x = 80

video_y = 470

video_width = 300

video_height = 500

# 广告模板路径,根据实际情况调整

ad_template_path = "./ad_template.jpg"

# 划屏幕位置,根据实际情况调整

swipe_start_x = 540

swipe_start_y = 1500

swipe_end_x = 540

swipe_end_y = 800

app_name = "com.example.app/com.example.app.MainActivity" # APP包名

def open_app(app_name):

os.system("adb shell am start -n "+app_name)

def swipe(start_x, start_y, end_x, end_y):

cmd = "adb shell input swipe " + str(start_x) + " " + str(start_y) + " " + str(end_x) + " " + str(

end_y) + " 200"

os.system(cmd)

def click(x, y):

cmd = "adb shell input tap " + str(x) + " " + str(y)

os.system(cmd)

def is_ad_over():

screen = cv2.imread("screenshot.jpg")

gray = cv2.cvtColor(screen, cv2.COLOR_BGR2GRAY)

template = cv2.imread(ad_template_path, cv2.IMREAD_GRAYSCALE)

res = cv2.matchTemplate(gray, template, cv2.TM_CCOEFF_NORMED)

if (res > 0.8).any():

return False

else:

return True

def main():

open_app(app_name)

time.sleep(3)

click(video_x+video_width/2, video_y+video_height/2)

while True:

time.sleep(5)

os.system("adb shell screencap -p /sdcard/screenshot.jpg")

os.system("adb pull /sdcard/screenshot.jpg .")

if is_ad_over():

swipe(swipe_start_x, swipe_start_y, swipe_end_x, swipe_end_y)

else:

time.sleep(1)

if __name__ == "__main__":

main()

4. 总结

本文介绍了ADB命令和Python脚本实现自动刷视频的具体实现过程。对于从事自动化测试、机器学习以及爬虫等领域的开发者,掌握ADB命令和Python自动化脚本的技能是必不可少的。

后端开发标签