Python实现⾃动化刷抖⾳的实例
前⾔
都说抖⾳有毒,⼀刷就停不下来了。看来抖⾳这款产品紧紧抓住了⼈们内⼼深处的某些需求。当然今天不是来探讨抖⾳这款产品的啊。今天我们来学习如何⽤Python实现⾃动刷抖⾳,并为颜值⾼的的⼩哥哥⼩点赞并评论。
项⽬环境
语⾔:Python3
编辑器:Pycharm
其他⼯具:⼿机⼀个,数据线⼀条,android studio
实现思路
1.获取⼿机抖⾳短视频的截图
2.调⽤百度API识别⼈脸
3.对符合条件的视频点赞和评论
获取抖⾳视频的截图
获取视频截屏,在这⾥⽤的是adb⼯具。adb⼯具即Android Debug Bridge(安卓调试桥)。是连接Android⼿机与PC端的桥梁,通过adb可以管理、操作模拟器和实体设备,如安装软件、查看设备软硬件参数、系统升级、运⾏shell命令等。在这⾥通过命令⾏窗⼝发送对应的命令,就可以实现⼿机的截屏。如果没有安装adb⼯具包,需要先安装adb⼯具包。
具体实现代码
# 图⽚压缩⽐例
SIZE_normal = 1.0
SIZE_small = 1.5
SIZE_more_small = 2.0
# adb⼿机截图
def get_screen_shot_img():
# 截图
os.system("adb shell /system/bin/screencap -p /sdcard/screenshot.jpg")
os.system("adb pull /sdcard/screenshot.jpg face.jpg")
# 压缩图⽚
img = Image.open("face.jpg").convert('RGB')
scale = SIZE_small
w, h = img.size
img.thumbnail((int(w / scale), int(h / scale)))
img.save('face.jpg')
调⽤百度API识别⼈脸
(1)进⼊百度云的⼈脸识别控制台
若没有百度账号,可以⽤⼿机号快速注册⼀个。
(2)创建⼈脸识别应⽤
账号登录成功之后,你需要创建应⽤才能正式调⽤百度api,应⽤创建成功后会获取到应⽤对应的API Key及Secret Key,⽤着两个参数进⾏接⼝调⽤操作,及相关配置。
点击上图中的创建应⽤,填写【应⽤名称】和【应⽤描述】,即可创建应⽤(其他选项可以不做操作,使⽤默认值即可)
(3)获取秘钥
创建完成后,点击“返回应⽤列表”进⾏下⼀步操作。平台将会分配给你此应⽤的相关凭证:API Key、Secret Key。他将⽤于在下⼀步获取调⽤接⼝所需的Access Token中。
(4)拿到API Key,Secret Key之后,通过这两个参数获取调⽤接⼝所需的Access Token
具体实现代码
def get_access_token():
# client_id 为官⽹获取的AK, client_secret 为官⽹获取的SK
host = 'aip.baidubce/oauth/2.0/token?grant_type=client_credentials&client_id=【官⽹获取的AK】' \
'&client_secret=【官⽹获取的SK】 '
header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
"Content-Type": "application/json"}
req = request.Request(url=host, headers=header_dict)
res = request.urlopen(req)
res = ad()
阿里巴巴登录res_json = json.loads(res.decode('utf-8'))
return res_json["access_token"]
调⽤百度API
'''
调⽤百度API,进⾏⼈脸探测
imgPath:图⽚的地址
access_token:开发者token
'''
def get_face_info_from_bai_du(img_path, access_token):
# 接⼝请求地址
request_url = "aip.baidubce/rest/2.0/face/v3/detect"
# ⼆进制⽅式打开图⽚⽂件
f = open(img_path, 'rb')
# 图⽚转换为base64
img = base64.ad())
params = {"face_field": "age,beauty,gender", "image": img, "image_type": 'BASE64', "max_face_num": 5}
params = urllib.parse.urlencode(params).encode(encoding='utf-8')
request_url = request_url + "?access_token=" + access_token
# 调⽤post请求⽅法
face_info = get_info_post_json_data(request_url, params)
# json字符串转对象
face_json = json.loads(face_info)
print(face_info)安装unix操作系统
if face_json['error_msg'] == 'SUCCESS':
制作网页链接的教程
学生信息管理系统架构图# 如果没有发现⼈像,会返回空
if face_json['result']['face_num'] == 0:
face_dict = {}
else:
# 把想要的部分提取存⼊字典中
result = face_json['result']['face_list'][0]
gender = result['gender']['type']
age = str(result['age'])
beauty = str(result['beauty'])
face_dict = {"gender": gender, "age": age, "beauty": beauty}
return face_dict
注意此处有坑,说说我⼊坑的过程。申请完ak和sk之后我调⽤⼈脸识别的api。返回的消息是:{‘error_code': 6, ‘error_msg':‘No permission to access data'}。我⼀查官⽅⽂档说是没有获取⽤户数据的权限。需要啥权限呢,难道调⽤这个接⼝还需要申请权限?不是有ak和sk吗?各种百度,⽆果。放弃了。晚上继续搞,这次从官⽅⽂档⼊⼿原因。⽆意看到说是api升级了。从v2升级到了v3。我申请的ak和sk对应的是v3版的。⽽我调⽤的接⼝确实v2版的。具体体现在请求URL的区别上,所以苦苦不到原因。从⼊坑的经历获取的教训是:⼀定要仔细看官⽅⽂档;不出bug的时候,就先放⼀放,回头再看,就会茅塞顿开,⼀切迎刃⽽解。
下⾯给出正常调⽤api返回的json数据
{
"error_code":0,
"error_msg":"SUCCESS",
"log_id":304592828857184421,
"timestamp":1542885718,
"cached":0,
"result":{
"face_num":1,
"face_list":[
{
"face_token":"9ae54ea1941d2b9d8a7e881f3ae39fe1",
"location":{
"left":374.5,
"top":406.94,
"width":140,
"height":136,
"rotation":30
},
"face_probability":0.99,
"angle":{
"yaw":-12,
"pitch":10.26,
"roll":29.76
},
"age":21,
"beauty":53.22,
"gender":{
"type":"female",
"probability":1
}
}
]
}
}
⼈脸识别这块。是根据你调⽤接⼝所传的参数来返回你需要的值。传的参数越多,返回消息越详细。我这⾥只获取年龄,性别,颜值这⼏个参数。同样v2版的接⼝和v3版的接⼝返回的数据格式也是有区别的。
对符合条件的视频点赞和评论
获取到api返回的数据后就是⼀些判断。我这⾥的判断是:如果识别到⼈脸,年龄在18岁以上,颜值在40以上。就点赞+评论。
具体实现
'''
将获得的数据进⾏分析
face_dict:⼈脸识别后的数据
'''
def analysis_face(face_dict):
# 如果发现⼈脸继续判断
if len(face_dict) != 0:
# 如果为⼥⽣
if face_dict["gender"] == "female":
print("性别:⼥")
print("年龄:" + face_dict["age"])
print("颜值:" + face_dict["beauty"])
# 如果颜值在40以上,并且年龄⼤于18继续
if float(face_dict["beauty"]) > 40 and float(face_dict["age"]) > 18:
# 点赞
commentaries()手机mysql安装配置教程
print("------------------捕获⼩⼀枚------------------")
print("------------------颜值好⾼哦,已点赞❤------------")
else:
print("颜值不及格,继续努⼒,下⼀个")
# 如果为男⽣
else:
print("性别:男")
print("年龄:" + face_dict["age"])
print("颜值:" + face_dict["beauty"])
# 如果颜值在40以上,并且年龄⼤于18继续
if float(face_dict["beauty"]) > 40 and float(face_dict["age"]) > 18:
# 点赞
commentaries()
print("------------------捕获⼩哥哥⼀枚------------------")
print("------------------颜值好⾼哦,已点赞❤------------")
else:
print("颜值不及格,继续努⼒,下⼀个")
else:
print("没有发现⼩和⼩哥哥,下⼀个")
# 上滑新视频
next_video()
怎么实现点赞和评论呢?没错还是使⽤adb⼯具。不过这⾥还需要⽤到⼀个Android studio 插件——Android Device Monitor。为什么要⽤他呢。因为当我们点赞的时候,需要知道点赞这个按钮在屏幕的具体位置。同理评论也需要知道评论输⼊框的坐标位置。
下⾯来看怎么⽤Android Device Monitor获取⼿机屏幕坐标信息。
连接上⼿机之后,如上图4个步骤。就可以获取到⼿机屏幕任意⼀点的位置坐标。这⾥只需要输⼊⼤概的位置坐标即可。那么这个插件从哪来呢。据说Android Studio3.0之前的版本,都⾃带这个插件。⽽我刚好是3.0之后的版本,所以还需要另外做些⼯作。具体使⽤⽅式如下:
在android-sdk/tools/⽬录的命令⾏中输⼊以下内容:monitor。即进⼊CMD窗⼝,cd到当时安装Android-sdk的⽬录,再继续cd
到tools⽬录下,然后输⼊命令monitor,这是期待已久的Android Device Monitor就会出现。因为每款⼿机的屏幕尺⼨可能不⼀样。所以下⾯的参数仅是我⼿机测量得到的坐标。
下⾯就是具体点赞评论的实现
# 点赞评论
def commentaries():php面试题2021答案
os.system("adb shell input tap 1000 1200")  # 点赞
time.sleep(0.01)
os.system("adb shell input tap 1000 1400")  # 点击评论按钮
time.sleep(0.05)
os.system("adb shell input tap 50 2000")  # 获取EditText输⼊框焦点
os.system("adb shell am broadcast -a ADB_INPUT_TEXT --es msg '真好真好'")  # 评论
os.system("adb shell input tap 1000 1860")  # 发送评论
time.sleep(1)
os.system("adb shell input tap 500 100")  # 退回主界⾯
最后提醒⼤家,抖⾳会限制⼀个账号在⼀段时间内的评论次数,长时间⾼频率的评论抖⾳就会暂时关掉你的评论权限。会给你来⼀句“你的发⾔太快了,请你控制寄⼏”,估计害怕有⼈专门刷评论。不过个把⼩时就会解封。
到此这篇关于Python实现⾃动化刷抖⾳的实例的⽂章就介绍到这了,更多相关Python ⾃动化刷抖⾳内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!