翼度科技»论坛 编程开发 python 查看内容

基于Python实现自动刷抖音,进行人脸识别,不是小姐姐自动划走下一个!

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
昨天木子问我能不能做自动刷某音短视频,还要自动刷小哥哥,不是小哥哥就划走。
我心想,这女人真麻烦,怎么这么多事。
不好好工作天天想着小哥哥!

为了不得罪她,当时我就先答应了下来,然而实际上我把小哥哥变成了小姐姐,刷什么小哥哥,多没品味!

好了,话不多说,我们直接上代码!
代码实战

首先导入需要使用的模块
  1. import base64
  2. import urllib
  3. import json
  4. import requests
  5. import sys
复制代码
 
获取接口
获取 access_token 有效期一般有一个月
  1. client_id = api_key
  2. client_secret = secret_key
  3. # 完整代码我都放在这个群了 872937351
  4. # 直接加它领取
  5. auth_url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
  6. header_dict = {
  7.     'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
  8.     "Content-Type": "application/json"
  9. }
复制代码
 
请求获取到token的接口
  1. response_at = requests.get(auth_url, headers=header_dict)
  2. json_result = json.loads(response_at.text)
  3. access_token = json_result['access_token']
  4. return access_token
复制代码
 
调用人脸识别的接口,返回识别到的人脸列表。
  1. headers ={
  2.     'Content-Type': 'application/json; charset=UTF-8'
  3. }
  4. if pic_type == TYPE_IMAGE_NETWORK:
  5.     image = pic_url
  6.     image_type = 'URL'
  7. else:
  8.     with open(pic_url, 'rb') as file:
  9.         image = base64.b64encode(file.read())
  10.     image_type = 'BASE64'
  11. post_data ={
  12.     'image': image,
  13.     'image_type': image_type,
  14.     'face_field': 'facetype,gender,age,beauty',  # expression,faceshape,landmark,race,quality,glasses
  15.     'max_face_num': 2
  16. }
  17. response_fi = requests.post(url_fi, headers=headers, data=post_data)
  18. json_fi_result = json.loads(response_fi.text)
复制代码
 
如果人脸识别成功,返回人脸列表,否则返回None
  1. if not json_fi_result or json_fi_result['error_msg'] != 'SUCCESS':
  2.     return None
  3. else:
  4.     return json_fi_result['result']['face_list']
复制代码
 
人脸识别,返回人脸列表。
  1. def parse_face_pic(pic_url, pic_type, access_token):
  2.     url_fi = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' + access_token
  3.     # 调用identify_faces,获取人脸列表
  4.     json_faces = identify_faces(pic_url, pic_type, url_fi)
  5.     if not json_faces:
  6.         return None
  7.     else:
  8.         return json_faces
复制代码
 
解析人脸识别结果,判断颜值是否达标。
条件:性别女,颜值大于等于 70
  1. def analysis_face(face_list):
  2.     # 是否能找到漂亮小姐姐
  3.     find_plxjj = False
  4.     if face_list:
  5.         for face in face_list:
  6.             # 判断是男、女
  7.             if face['gender']['type'] == 'female':
  8.                 age = face['age']
  9.                 beauty = face['beauty']
  10.                 if beauty >= 70:
  11.                     print('发现一个 ' + str(age) + ' 岁的美女,颜值为:%d,满足条件!' % beauty)
  12.                     find_plxjj = True
  13.                     break
  14.                 else:
  15.                     print('发现一个 ' + str(age) + ' 岁的女生,颜值为:%d,不及格,继续~' % beauty)
  16.                     continue
  17.     return find_plxjj
复制代码
 
App的应用包名和初始Activity
  1. package_name = 'com.ss.android.ugc.aweme'
  2. activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity'
复制代码
 
打开 Android 应用
  1. def start_my_app(package_name, activity_name):
  2.     os.popen('adb shell am start -n %s/%s' % (package_name, activity_name))
复制代码
 
保存截图以及点赞
  1. def save_video_met(screen_name, find_girl_num):
  2.     img = Image.open(screen_name).convert('RGB')
  3.     img.save("漂亮的小姐姐/DYGirl_%d.jpg" % find_girl_num)
  4.     os.system("adb shell input tap 666 800")
复制代码
 
向上划屏幕,播放下一段视频
  1. def play_next_video():
  2.     os.system("adb shell input swipe 540 1300 540 500 100")
复制代码
 
截图并修剪保存
  1. def get_screen_shot_part_img(image_name):
  2.     # 截图
  3.     os.system("adb shell /system/bin/screencap -p /sdcard/screenshot.jpg")
  4.     os.system("adb pull /sdcard/screenshot.jpg %s" % image_name)
  5.     # 打开图片
  6.     img = Image.open(image_name).convert('RGB')
  7.     # 图片的原宽、高
  8.     w, h = img.size
  9.     # 截取部分,去掉其头像、其他内容杂乱元素
  10.     img = img.crop((0, 400, 1200, 2750))
  11.     img.thumbnail((int(w / 1.5), int(h / 1.5)))
  12.     # 保存到本地
  13.     img.save(image_name)
  14.     return image_name
复制代码
 
人脸识别时长、次数
设置一条视频最长的识别时间,要是墨迹 10 秒还不露脸,也不管她了,直接下一个。
  1. access_token = get_access_token()
  2. # 识别时长
  3. RECOGNITE_TOTAL_TIME = 10
  4. # 识别次数
  5. recognite_count = 0
复制代码
 
视频识别
  1. start_my_app(package_name, activity_name)
  2. time.sleep(3)
  3. print("开始播放视频~")
  4. find_girl_num = 0
  5. # 对当前视频截图去人脸识别
  6. while True:
  7.     # 开始识别的时间
  8.     recognite_time_start = datetime.datetime.now()
  9.     # 识别次数
  10.     recognite_count = 1
  11.     # 循环地去刷抖音
  12.     while True:
  13.         # 获取截图
  14.         screen_name = get_screen_shot_part_img('images/temp%d.jpg' % recognite_count)
  15.         # 人脸识别
  16.         recognite_result = analysis_face(parse_face_pic(screen_name, TYPE_IMAGE_LOCAL, access_token))
  17.         recognite_count += 1
  18.         # 第n次识别结束后的时间
  19.         recognite_time_end = datetime.datetime.now()
  20.         # 这是一个美女
  21.         if recognite_result:
  22.             find_girl_num += 1
  23.             save_video_met(screen_name, find_girl_num)
  24.             print("已经发现 %d 个漂亮小姐姐" % find_girl_num)
  25.             break
  26.         else:
  27.             if (recognite_time_end - recognite_time_start).seconds < RECOGNITE_TOTAL_TIME:
  28.                 continue
  29.             else:
  30.                 print('跳过!!!!只想刷美女视频')
  31.                 # 跳出里层循环
  32.                 break
复制代码
 
删除临时文件
  1. shutil.rmtree('./images')
  2. time.sleep(0.05)
  3. os.mkdir('./images')
复制代码
 
播放下一条视频
  1. print('==' * 30)
  2. time.sleep(1)
  3. print('准备播放下一个视频~')
  4. play_next_video()
  5. import random
  6. time.sleep(random.uniform(0,1))
复制代码
 
最后

好了,今天的分享就到这里结束了!
大家觉得有用的话可以来个免费的点赞+收藏+关注,防止下次我悄悄更新了好东西却不知道!

来源:https://www.cnblogs.com/hahaa/p/17195847.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具