今天无意中看到一篇一年前的技术文章,文章的作者ID为“神奇的战士”(Github上ID为wangshub),这位作者也是曾经有名的“微信跳一跳辅助”的Python大佬。
下面言归正传,看看如何利用Python做一些有趣的事,比如在抖音上找到漂亮小姐姐。
技术原理很简单,主要利用的是Python和Android ADB的结合,加以AI辅助,从而实现在抖音上发现漂亮面孔、点赞、关注以及自动评论,先来看看成效如何:
自动关注+点赞
实现功能包括:
-
自动翻页
-
颜值检测
-
人脸识别
-
自动点赞
-
自动关注
-
随机防 Ban
-
自动评论
实现步骤如下:
-
打开《抖音短视频》APP,进入主界面
-
获取手机截图,并对截图进行压缩 (Size < 1MB);
-
请求人脸识别 API;
-
解析返回的人脸 Json 信息,对人脸检测切割;
-
当颜值大于门限值 BEAUTY_THRESHOLD时,点赞并关注;
-
下一页,返回第一步。
下面我们来看看部分代码实现:
使用adb shell input swipe实现滑动,从而实现“下一页”:
在终端中输入 adb shell input swipe 540 1300 540 500 100
表示从坐标点(540,1300)用100ms滑动到(540,500)坐标点, 最后的100,为时间参数,以毫秒为单位,不填则为默认时间。
code:
def next_page():
"""
翻到下一页
:return:
"""
cmd = 'shell input swipe {x1} {y1} {x2} {y2} {duration}'.format(
x1=config['center_point']['x'],
y1=config['center_point']['y']+config['center_point']['ry'],
x2=config['center_point']['x'],
y2=config['center_point']['y'],
duration=200
)
adb.run(cmd)
time.sleep(1.5)
使用adb shell input tap实现屏幕点击,从而实现“点赞”和“关注”:
在终端中输入 adb shell input tap 500 500
表示在坐标500,500处进行点击
code:
def thumbs_up():
"""
点赞
:return:
"""
cmd = 'shell input tap {x} {y}'.format(
x=config['star_bottom']['x'] + _random_bias(10),
y=config['star_bottom']['y'] + _random_bias(10)
)
adb.run(cmd)
time.sleep(0.5)
def follow_user():
"""
关注用户
:return:
"""
cmd = 'shell input tap {x} {y}'.format(
x=config['follow_bottom']['x'] + _random_bias(10),
y=config['follow_bottom']['y'] + _random_bias(10)
)
adb.run(cmd)
time.sleep(0.5)
使用 am broadcast -a ADB_INPUT_TEXT --es msg,从而实现自动评论:
在控制台输入adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'test'
即可实现输入指定的文本
code:
def auto_reply():
msg = "垆边人似月,皓腕凝霜雪。就在刚刚,我的心动了一下,小姐姐你好可爱呀_Powered_By_Python"
# 点击右侧评论按钮
tap(config['comment_bottom']['x'], config['comment_bottom']['y'])
time.sleep(1)
#弹出评论列表后点击输入评论框
tap(config['comment_text']['x'], config['comment_text']['y'])
time.sleep(1)
#输入上面msg内容 ,注意要使用ADB keyboard 否则不能自动输入,参考:https://www.jianshu.com/p/2267adf15595
cmd = 'shell am broadcast -a ADB_INPUT_TEXT --es msg {text}'.format(text=msg)
adb.run(cmd)
time.sleep(1)
# 点击发送按钮
tap(config['comment_send']['x'], config['comment_send']['y'])
time.sleep(0.5)
# 触发返回按钮, keyevent 4 对应安卓系统的返回键,参考KEY 对应按钮操作:https://www.cnblogs.com/chengchengla1990/p/4515108.html
cmd = 'shell input keyevent 4'
adb.run(cmd)
而对于漂亮小姐姐的识别,则是将当前视频屏幕进行截图,然后将图片放到AI平台,调用其API进行判断(请自行申请AI平台的AppID和AppKey),如腾讯AI、百度AI等:
利用BEAUTY_THRESHOLD与API返回的JSON数据中的beauty值进行比对,从而判断是否为“漂亮”小姐姐,当然代码中的BEAUTY_THRESHOLD的初始默认值为80,可以根据需要自行修改。
需要注意的是,目前该代码暂时只适配了一加5(1920x1080 分辨率),如果手机不是该分辨率,需要修改 config/ 文件夹下面的配置文件;
-
config.json配置文件参考:
-
center_point: 屏幕中心点(x, y),区域范围 rx, ry
-
follow_bottom: 关注按钮位置(x, y),区域范围 rx, ry
-
star_bottom: 点赞按钮位置(x, y),区域范围 rx, ry
另外,面部截取的图片会保存在名为face的文件夹中,
目前该代码在Github上的Star数量已高达6.7K,甚至曾被Github官方推荐至首页,果然是广大技术宅男之福音。
随着Python的越来越流行,使用Python可以做出很多有趣的事,各位少年,加油吧!