title: 抖音人臉識別Autojs腳本
用Autojs寫的抖音人臉顏值檢測腳本
疫情期間宅家久了,昨天閑着沒事(好吧,有事情,但是我不想做) ,消費之火熊熊燃燒。一咬牙把Autojs入正了。我去年接觸過這個app:《家國夢》剛出來的時候,用它寫了解放雙手的腳本,嘗到了快樂。
既然入正了,總得干點啥吧。然后我想起了前幾天在Github上看見的一個很有意思的項目:如何在抖音上找到漂亮小姐姐 。剛看到這個項目的時候,我就為作者的腦回路狠狠的點了個贊。
所以,我想着自己也寫一個玩玩吧,哈哈哈哈哈哈。
於是,昨天晚上,把這個寫完了,還貼心的開了個源。(雖然實現挺簡單的。。原諒我的臭屁! 哈哈哈哈)
1. 思路來自wangshub
的開源項目Douyin-Bot
- 打開抖音
- 截圖
- 識別是否有人臉並檢測顏值
- 顏值合格則點贊關注切換下一個視頻
2. 人臉識別api用的百度智能雲(因為免費)
鏈接:百度智能雲
寫代碼的時候發現百度這個Api還能判斷性別(還挺准的,至少我覺得比顏值准確),
所以除了識別小姐姐,我還加上了識別小哥哥的功能
3. 核心源碼
var faceValue = 30;//默認30分
var pornValue = 2;//默認2位
var type = 'female';//默認小姐姐
if(files.read("yanzhi.dat")){
faceValue = files.read("yanzhi.dat");
}else{
faceValue = 30;//默認30分
}
if(files.read("shuliang.dat")){
pornValue = files.read("shuliang.dat");
}else{
pornValue = 2;//默認2位
}
if(files.read("xingbie.dat")){
type = files.read("xingbie.dat");
}else{
type = 'female';//默認2位
}
var countVid = 1;//滑動的視頻數
var countAdd = 0;//關注的視頻數
console.show();
log("顏值:"+faceValue);
log("數量:"+pornValue);
log("性別:"+type);
if(app.launch("com.ss.android.ugc.aweme")){
log("抖音打開成功!");
toast("抖音打開成功!");
if(!requestScreenCapture(false)){
log("請求截圖失敗");
exit();
}
var addStar = id("b6s").desc("關注").findOne();
var addStar_x = addStar.bounds().centerX();
var addStar_y = addStar.bounds().centerY();
log("獲取關注控件成功!");
var addHeart = id("alx").findOne();
var addHeart_x = addHeart.bounds().centerX();
var addHeart_y = addHeart.bounds().centerY();
log("獲取點贊控件成功!");
while(countAdd < pornValue){
var time = 1000;
var allTime = 0.3 * 60 * 1000;
for(var i = 0; allTime > 0; i++){
var temAdd = countAdd;
var img = captureScreen();
var imgFile = i+".png";
images.saveImage(img,imgFile);
log("…………開始人臉識別!…………");
toast("開始人臉識別!");
var img1 = images.read(imgFile);
var ak = 'KXIS86UejDFk9RzMxYp0DFMF';//你的人臉識別ak
var sk = 'C93QyBiG346cTezoECXQsGcUsszaln4G';//你的人臉識別sk
var access_token = http.get("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id="+ak+"&client_secret="+sk).body.json().access_token;
var url = "https://aip.baidubce.com/rest/2.0/face/v3/detect" + "?access_token=" + access_token;
var image64 = images.toBase64(img1);
if(img1){
var res = http.post(url, {
headers: {
'Content-Type': 'application/json; charset=UTF-8'
},
'image': image64,
'image_type': 'BASE64',
'face_field': 'gender,age,beauty'
});
var str = JSON.parse(res.body.string());
if(str['error_msg'] == 'pic not has face'){
log(countVid+".沒有檢測到人臉!");
toast("沒有檢測到人臉!");
}else if(str['error_msg'] == 'SUCCESS'){
log(countVid+".檢測到了"+str['result']['face_num']+"張人臉");
log(countVid+".人臉性別為:"+str['result']['face_list'][0]['gender']['type']);
log(countVid+".人臉年齡為:"+str['result']['face_list'][0]['age']);
log(countVid+".人臉顏值為:"+str['result']['face_list'][0]['beauty']);
toast("人臉性別為:["+str['result']['face_list'][0]['gender']['type']+"] 人臉顏值為:["+str['result']['face_list'][0]['beauty']+"]");
if(str['result']['face_list'][0]['gender']['type'] == type){
if(str['result']['face_list'][0]['beauty'] > faceValue){
log(countVid+".人臉顏值合格!");
toast(countVid+".人臉顏值合格!");
click(addStar_x,addStar_y);
click(addHeart_x,addHeart_y);
countAdd++;
}
}
}
}
log("…………"+countVid+"的人臉識別運行結束…………");
toast("人臉識別完成");
time += 1000*i;
allTime = allTime - time;
sleep(time);
log("第"+countVid+"個視頻,已點贊關注"+countAdd+"個視頻");
toast("第"+countVid+"個視頻,已點贊關注"+countAdd+"個視頻");
files.remove(imgFile);
if(temAdd < countAdd){
log("視頻已關注");
toast("視頻已關注");
if(pornValue != countAdd){
swipe(device.width / 2, (device.height - (device.height/8)), device.width / 2, device.height/8, 1500);
log("滑動完成");
countVid ++;
}
break;
}else{
log("視頻不符合您的審美")
toast("視頻不符合您的審美");
if(allTime <0){
swipe(device.width / 2, (device.height - (device.height/8)), device.width / 2, device.height/8, 1500);
log("滑動完成");
countVid ++;
}
}
}
}
}
log("運行結束!共關注"+countAdd+"位顏值"+faceValue+"分以上的用戶!");
toast("運行結束!共關注"+countAdd+"位顏值"+faceValue+"分以上的用戶!");
log("謝謝您的使用,再見!");
toast("謝謝您的使用,再見!");
sleep(5000);
console.hide();
4. 運行截圖
5. 使用說明
或者看我的Gitee
最后,如果您覺着這項目有趣,star一下叭o.o