利用Python实现自动给漂亮小姐姐视频点赞( 二 )


利用Python实现自动给漂亮小姐姐视频点赞文章插图
首先启动抖音 APP , 等第一个视频加载出来播放之后 , 截取屏幕画面 , 调用百度 AI 的人脸识别接口进行人脸检测和评分 。
如果画面中检测到颜值评分70分以上 , 且性别为女的人脸 , 则点击屏幕中的”点赞“按钮 , 然后上滑播放下一条视频 。
如果画面中中没有出现人脸 , 或者性别为男 , 或者颜值不足70 , 则继续截图检测 , 直到视频播放结束 , 或者找到满足条件的人脸为止 , 然后上滑播放下一条视频 。
为了尽可能地不错过有漂亮小姐姐的抖音 , 每条视频中会截取 4 - 5 张图片进行检测 , 只要有一张截图中有高颜值的小姐姐 , 那么我们就对这个视频进行点赞 。 如果这样都检测不出来 , 只能说小姐姐藏得太深 , 或者漂亮的不够明显了 。
大概思路就是这样 , 下面我们就来动手完成爬虫吧 。
3. 动手撸码写爬虫由于爬虫还是稍微有点大 , 所以我拆成三个部分来写 。 人脸识别部分 , ADB 控制部分 , 和爬虫主逻辑部分 。
(1)人脸识别部分
这部分用了调用了 百度AI 的人脸识别接口 , 需要将你自己申请的 appid , api_key , secret_key 三个参数填到代码里 。
import base64import urllibimport jsonimport requestsimport sys appid = '填写你申请的 appid'api_key = '填写你申请的 api_key'secret_key = '填写你申请的 secret_key' 这部分的代码主要包括四个函数 , 包括

  • get_access_token 函数 , 用来获取人脸识别接口必须的参数 access_token 。
  • identify_faces 函数 和 parse_face_pic 函数 , 这两个函数主要是用来将图片上传 , 调用人脸识别接口进行人脸识别 , 然后返回识别出来的人脸列表 。
  • analysis_face 函数 , 主要作用是解析前面两个函数返回的人脸列表 , 从而判断图片中是否有漂亮小姐姐 。
def get_access_token():"""获取 access_token 有效期一般有一个月"""client_id = api_keyclient_secret = secret_keyauth_url = ';client_id=' + client_id + ' Trident/7.0; rv:11.0) like Gecko',"Content-Type": "application/json"}# 请求获取到token的接口response_at = requests.get(auth_url, headers=header_dict)json_result = json.loads(response_at.text)access_token = json_result['access_token']return access_token def identify_faces(pic_url, pic_type, url_fi):"""调用人脸识别的接口 , 返回识别到的人脸列表"""headers ={'Content-Type': 'application/json; charset=UTF-8'}if pic_type == TYPE_IMAGE_NETWORK:image = pic_urlimage_type = 'URL'else:with open(pic_url, 'rb') as file:image = base64.b64encode(file.read())image_type = 'BASE64'post_data =http://kandian.youth.cn/index/{'image': image,'image_type': image_type,'face_field': 'facetype,gender,age,beauty',# expression,faceshape,landmark,race,quality,glasses'max_face_num': 2}response_fi = requests.post(url_fi, headers=headers, data=http://kandian.youth.cn/index/post_data)json_fi_result = json.loads(response_fi.text)# 如果人脸识别成功 , 返回人脸列表 , 否则返回Noneif not json_fi_result or json_fi_result['error_msg'] != 'SUCCESS':return Noneelse:return json_fi_result['result']['face_list'] def parse_face_pic(pic_url, pic_type, access_token):"""人脸识别 , 返回人脸列表"""url_fi = '' + access_token# 调用identify_faces , 获取人脸列表json_faces = identify_faces(pic_url, pic_type, url_fi)if not json_faces:return Noneelse:return json_facesdef analysis_face(face_list):"""解析人脸识别结果 , 判断颜值是否达标条件:性别女 , 颜值大于等于 70"""# 是否能找到漂亮小姐姐find_plxjj = Falseif face_list:for face in face_list:# 判断是男、女if face['gender']['type'] == 'female':age = face['age']beauty = face['beauty']if beauty >= 70:print('发现一个 ' + str(age) + ' 岁的美女 , 颜值为:%d , 满足条件!' % beauty)find_plxjj= Truebreakelse:print('发现一个 ' + str(age) + ' 岁的女生 , 颜值为:%d,不及格 , 继续~' % beauty)continuereturn find_plxjj(2)ADB 控制部分
ADB 控制部分 , 大概思路就是通过python中的 os 库执行 adb 指令 , 来对手机进行操作 。
主要包括四个函数:
  • start_my_app 函数 , 用来启动 抖音 APP 。
  • save_video_met 函数 , 点击 ”点赞“ 按钮 。 在检测到漂亮小姐姐之后调用 。
  • play_next_video 函数 , 向上滑动屏幕 , 播放下一个视频 。
  • get_screen_shot_part_img 函数 , 用来截取屏幕图像 , 保存到电脑中 , 以遍后续人脸识别 。
import osfrom PIL import Image # 抖音App的应用包名和初始Activitypackage_name = 'com.ss.android.ugc.aweme'activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity' def start_my_app(package_name, activity_name):# 打开 Android 应用os.popen('adb shell am start -n %s/%s' % (package_name, activity_name))def save_video_met(screen_name, find_girl_num):# 保存截图img = Image.open(screen_name).convert('RGB')img.save("漂亮的小姐姐/DYGirl_%d.jpg" % find_girl_num)# 给视频点赞os.system("adb shell input tap 1330 1750")def play_next_video():# 向上划屏幕 , 播放下一段视频os.system("adb shell input swipe 540 1300 540 500 100") def get_screen_shot_part_img(image_name):# 截图os.system("adb shell /system/bin/screencap -p /sdcard/screenshot.jpg")os.system("adb pull /sdcard/screenshot.jpg %s" % image_name)# 打开图片img = Image.open(image_name).convert('RGB')# 图片的原宽、高w, h = img.size# 截取部分 , 去掉其头像、其他内容杂乱元素img = img.crop((0, 400, 1200, 2750))img.thumbnail((int(w / 1.5), int(h / 1.5)))# 保存到本地img.save(image_name)return image_name