昨天木子問我能不能做自動刷某音短視頻,還要自動刷小哥哥,不是小哥哥就划走。 我心想,這女人真麻煩,怎麼這麼多事。 不好好工作天天想著小哥哥! 為了不得罪她,當時我就先答應了下來,然而實際上我把小哥哥變成了小姐姐,刷什麼小哥哥,多沒品味! 好了,話不多說,我們直接上代碼! 代碼實戰 首先導入需要使用的 ...
昨天木子問我能不能做自動刷某音短視頻,還要自動刷小哥哥,不是小哥哥就划走。
我心想,這女人真麻煩,怎麼這麼多事。
不好好工作天天想著小哥哥!
為了不得罪她,當時我就先答應了下來,然而實際上我把小哥哥變成了小姐姐,刷什麼小哥哥,多沒品味!
好了,話不多說,我們直接上代碼!
代碼實戰
首先導入需要使用的模塊
import base64 import urllib import json import requests import sys
獲取介面
獲取 access_token 有效期一般有一個月
client_id = api_key client_secret = secret_key # 完整代碼我都放在這個群了 872937351 # 直接加它領取 auth_url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret header_dict = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; 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
調用人臉識別的介面,返回識別到的人臉列表。
headers ={ 'Content-Type': 'application/json; charset=UTF-8' } if pic_type == TYPE_IMAGE_NETWORK: image = pic_url image_type = 'URL' else: with open(pic_url, 'rb') as file: image = base64.b64encode(file.read()) image_type = 'BASE64' post_data ={ '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=post_data) json_fi_result = json.loads(response_fi.text)
如果人臉識別成功,返回人臉列表,否則返回None
if not json_fi_result or json_fi_result['error_msg'] != 'SUCCESS': return None else: return json_fi_result['result']['face_list']
人臉識別,返回人臉列表。
def parse_face_pic(pic_url, pic_type, access_token): url_fi = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' + access_token # 調用identify_faces,獲取人臉列表 json_faces = identify_faces(pic_url, pic_type, url_fi) if not json_faces: return None else: return json_faces
解析人臉識別結果,判斷顏值是否達標。
條件:性別女,顏值大於等於 70
def analysis_face(face_list): # 是否能找到漂亮小姐姐 find_plxjj = False if 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 = True break else: print('發現一個 ' + str(age) + ' 歲的女生,顏值為:%d,不及格,繼續~' % beauty) continue return find_plxjj
App的應用包名和初始Activity
package_name = 'com.ss.android.ugc.aweme' activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity'
打開 Android 應用
def start_my_app(package_name, activity_name): 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 666 800")
向上劃屏幕,播放下一段視頻
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
人臉識別時長、次數
設置一條視頻最長的識別時間,要是墨跡 10 秒還不露臉,也不管她了,直接下一個。
access_token = get_access_token() # 識別時長 RECOGNITE_TOTAL_TIME = 10 # 識別次數 recognite_count = 0
視頻識別
start_my_app(package_name, activity_name) time.sleep(3) print("開始播放視頻~") find_girl_num = 0 # 對當前視頻截圖去人臉識別 while True: # 開始識別的時間 recognite_time_start = datetime.datetime.now() # 識別次數 recognite_count = 1 # 迴圈地去刷抖音 while True: # 獲取截圖 screen_name = get_screen_shot_part_img('images/temp%d.jpg' % recognite_count) # 人臉識別 recognite_result = analysis_face(parse_face_pic(screen_name, TYPE_IMAGE_LOCAL, access_token)) recognite_count += 1 # 第n次識別結束後的時間 recognite_time_end = datetime.datetime.now() # 這是一個美女 if recognite_result: find_girl_num += 1 save_video_met(screen_name, find_girl_num) print("已經發現 %d 個漂亮小姐姐" % find_girl_num) break else: if (recognite_time_end - recognite_time_start).seconds < RECOGNITE_TOTAL_TIME: continue else: print('跳過!!!!只想刷美女視頻') # 跳出裡層迴圈 break
刪除臨時文件
shutil.rmtree('./images') time.sleep(0.05) os.mkdir('./images')
播放下一條視頻
print('==' * 30) time.sleep(1) print('準備播放下一個視頻~') play_next_video() import random time.sleep(random.uniform(0,1))
最後
好了,今天的分享就到這裡結束了!
大家覺得有用的話可以來個免費的點贊+收藏+關註,防止下次我悄悄更新了好東西卻不知道!