我用 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,用着两个参数进行接口调用操作,及相关配置。

我用 Python 实现自动刷抖音小姐姐!

点击上图中的创建应用,填写【应用名称】和【应用描述】,即可创建应用(其他选项可以不做操作,使用认值即可)

(3)获取秘钥

创建完成后,点击“返回应用列表”进行下一步操作。平台将会分配给你此应用的相关凭证:API Key、Secret Key。他将用于在下一步获取调用接口所需的Access Token中。

我用 Python 实现自动刷抖音小姐姐!

(4)拿到API Key,Secret Key之后,通过这两个参数获取调用接口所需的Access Token

我用 Python 实现自动刷抖音小姐姐!

具体实现代码

def get_access_token():
 # client_id 为官网获取的AK, client_secret 为官网获取的SK
 host = 'https://aip.baidubce.com/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 = res.read()
 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 = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
 # 二进制方式打开图片文件
 f = open(img_path,'rb')
 # 图片转换为base64
 img = base64.b64encode(f.read())
 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)
 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。返回的消息是:{'errorcode': 6,'errormsg': '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
 }
 }
 ]
 }
}

python 人脸识别这块。是根据你调用接口所传的参数来返回你需要的值。传的参数越多,返回消息越详细。我这里只获取年龄,性别,颜值这几个参数。同样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()
 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获取手机屏幕坐标信息。

我用 Python 实现自动刷抖音小姐姐!

连接上手机之后,如上图4个步骤。就可以获取到手机屏幕任意一点的位置坐标。这里只需要输入大概的位置坐标即可。那么这个插件从哪来呢。据说Android Studio3.0之前的版本,都自带这个插件。而我刚好是3.0之后的版本,所以还需要另外做些工作。具体使用方式如下: 在android-sdk/tools/目录的命令行中输入以下内容:monitor。即进入CMD窗口,cd到当时安装Android-sdk的目录,再继续cd到tools目录下,然后输入命令montior,这是期待已久的Android Device Monitor就会出现。因为每款手机的屏幕尺寸可能不一样。所以下面的参数仅是我手机测量得到的坐标。 下面就是具体点赞评论的实现

# 点赞评论
def commentaries():
 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") # 退回主界面

这里还有一点需要注意:adb shell input text 不支持中文输入。只能输入'hello world'这样的英文,输入英文前也是需要将键盘切换到英文输入模式下的。继续百度,如何实现中文输入,发现另一个神器—ADBKeyBoard.apk,一款老外写的输入法。完美解决不能输入中文的问题。

安装这个app。并将认输入法切换成ADBKeyBoard。这款app我已上传百度云。后台回复【输入法】,就可获取

我用 Python 实现自动刷抖音小姐姐!

最后运行程序!即可自动刷!

进群:548377875   即可获取数十套PDF的获取方式哦!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


我最近重新拾起了计算机视觉,借助Python的opencv还有face_recognition库写了个简单的图像识别demo,额外定制了一些内容,原本想打包成exe然后发给朋友,不过在这当中遇到了许多小问题,都解决了,记录一下踩过的坑。 1、Pyinstaller打包过程当中出现warning,跟d
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Pooling在中文当中的意思是“池化”,在神经网络当中非常常见,通常用的比较多的一种是Max Pooling,具体操作如下图: 结合图像理解,相信你也会大概明白其中的本意。不过Pooling并不是只可以选取2x2的窗口大小,即便是3x3,
记得大一学Python的时候,有一个题目是判断一个数是否是复数。当时觉得比较复杂不好写,就琢磨了一个偷懒的好办法,用异常处理的手段便可以大大程度帮助你简短代码(偷懒)。以下是判断整数和复数的两段小代码: 相信看到这里,你也有所顿悟,能拓展出更多有意思的方法~
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic histogram2. 数据分布与密度信息显示 Control rug and density on seaborn histogram3. 带箱形图的直方图 Histogram with a boxplot on t
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic violinplot2. 小提琴图样式自定义 Custom seaborn violinplot3. 小提琴图颜色自定义 Control color of seaborn violinplot4. 分组小提琴图 Group
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic density plot2. 核密度图的区间控制 Control bandwidth of density plot3. 多个变量的核密度图绘制 Density plot of several variables4. 边
首先 import tensorflow as tf tf.argmax(tenso,n)函数会返回tensor中参数指定的维度中的最大值的索引或者向量。当tensor为矩阵返回向量,tensor为向量返回索引号。其中n表示具体参数的维度。 以实际例子为说明: import tensorflow a
seaborn学习笔记章节 seaborn是一个基于matplotlib的Python数据可视化库。seaborn是matplotlib的高级封装,可以绘制有吸引力且信息丰富的统计图形。相对于matplotlib,seaborn语法更简洁,两者关系类似于numpy和pandas之间的关系,seabo
Python ConfigParser教程显示了如何使用ConfigParser在Python中使用配置文件。 文章目录 1 介绍1.1 Python ConfigParser读取文件1.2 Python ConfigParser中的节1.3 Python ConfigParser从字符串中读取数据
1. 处理Excel 电子表格笔记(第12章)(代码下载) 本文主要介绍openpyxl 的2.5.12版处理excel电子表格,原书是2.1.4 版,OpenPyXL 团队会经常发布新版本。不过不用担心,新版本应该在相当长的时间内向后兼容。如果你有新版本,想看看它提供了什么新功能,可以查看Open
1. 发送电子邮件和短信笔记(第16章)(代码下载) 1.1 发送电子邮件 简单邮件传输协议(SMTP)是用于发送电子邮件的协议。SMTP 规定电子邮件应该如何格式化、加密、在邮件服务器之间传递,以及在你点击发送后,计算机要处理的所有其他细节。。但是,你并不需要知道这些技术细节,因为Python 的
文章目录 12 绘图实例(4) Drawing example(4)1. Scatterplot with varying point sizes and hues(relplot)2. Scatterplot with categorical variables(swarmplot)3. Scat
文章目录 10 绘图实例(2) Drawing example(2)1. Grouped violinplots with split violins(violinplot)2. Annotated heatmaps(heatmap)3. Hexbin plot with marginal dist
文章目录 9 绘图实例(1) Drawing example(1)1. Anscombe’s quartet(lmplot)2. Color palette choices(barplot)3. Different cubehelix palettes(kdeplot)4. Distribution
Python装饰器教程展示了如何在Python中使用装饰器基本功能。 文章目录 1 使用教程1.1 Python装饰器简单示例1.2 带@符号的Python装饰器1.3 用参数修饰函数1.4 Python装饰器修改数据1.5 Python多层装饰器1.6 Python装饰器计时示例 2 参考 1 使
1. 用GUI 自动化控制键盘和鼠标第18章 (代码下载) pyautogui模块可以向Windows、OS X 和Linux 发送虚拟按键和鼠标点击。根据使用的操作系统,在安装pyautogui之前,可能需要安装一些其他模块。 Windows: 不需要安装其他模块。OS X: sudo pip3
文章目录 生成文件目录结构多图合并找出文件夹中相似图像 生成文件目录结构 生成文件夹或文件的目录结构,并保存结果。可选是否滤除目录,特定文件以及可以设定最大查找文件结构深度。效果如下: root:[z:/] |--a.py |--image | |--cat1.jpg | |--cat2.jpg |
文章目录 VENN DIAGRAM(维恩图)1. 具有2个分组的基本的维恩图 Venn diagram with 2 groups2. 具有3个组的基本维恩图 Venn diagram with 3 groups3. 自定义维恩图 Custom Venn diagram4. 精致的维恩图 Elabo
mxnet60分钟入门Gluon教程代码下载,适合做过深度学习的人使用。入门教程地址: https://beta.mxnet.io/guide/getting-started/crash-course/index.html mxnet安装方法:pip install mxnet 1 在mxnet中使
文章目录 1 安装2 快速入门2.1 基本用法2.2 输出图像格式2.3 图像style设置2.4 属性2.5 子图和聚类 3 实例4 如何进一步使用python graphviz Graphviz是一款能够自动排版的流程图绘图软件。python graphviz则是graphviz的python实