auto.waitFor();
log("-启动-浏览功能");
storage.put("RUN_JS_RUNING",true);//运行启动
var startTime=new Date().getTime();
var plList;//评论内容列表
var gzzbNum=0;//记录关注主播数量
var dzslNum=0;//点赞主播数量
var llzpNum=0;//浏览作品数量
var zpgjcList;//关键词
var tlsjTime=5000;//停留观看时间 默认5s
if(DY_czll_plnr!=null&&DY_czll_plnr!=""){
plList=DY_czll_plnr.split(",");
}
beforRun();
doNext();
endRun();
storage.put("RUN_JS_RUNING",false);//运行结束
log("-停止-浏览功能");
//继续下一步
function doNext(){
var ifInLiveRoom=checkInLive();//是否在直播间
if(ifInLiveRoom){
//直播间里
zbjRun();
}else{
//短视频
dspRun();
}
}
//短视频运行
function dspRun(){
console.warn("浏览短视频");
console.warn("自定义评论内容:"+DY_czll_plnr);
while(true){
llzpNum++;
var ifContinue=checkGjz();//检测关键字
if(ifContinue){
//检测有关键字
clickGuanzhu();//短视频点赞关注
clickZan();//短视频点赞关注
clickPinglun();//短视频评论
sleep(tlsjTime);//停留浏览时间3s
}
//判断是否停止运行脚本
var isRun=storage.get("RUN_JS_RUNING",false);
if(!isRun){
return;//结束
}
//检测运行时间
var endTime=new Date().getTime();
var runAllTime=(endTime-startTime)/1000;//已经运行秒
if(runAllTime>DY_czll_lltjsc*60){
//到达设置时间
return;
}
console.warn("屏幕宽高:"+device.width+","+device.height);
// swipe(device.width-200, device.height-400, device.width-200, 100, 500);//下一条视频
swipe(device.width/2, device.height/5*4, device.width/2, device.height/5, 200);//下一条视频
sleep(1000);
}
}
//直播间运行
function zbjRun(){
console.warn("观看直播");
while(true){
llzpNum++;
clickHbFd();//点击领取红包福袋
var ifContinue=checkZbjGjz();//检测关键字
if(ifContinue){
//检测有关键字
clickZbjPinglun();//直播间评论
sleep(tlsjTime);//停留浏览时间3s
}
//判断是否停止运行脚本
var isRun=storage.get("RUN_JS_RUNING",false);
if(!isRun){
return;//结束
}
//检测运行时间
var endTime=new Date().getTime();
var runAllTime=(endTime-startTime)/1000;//已经运行秒
if(runAllTime>DY_czll_lltjsc*60){
//到达设置时间
return;
}
swipe(device.width-200, device.height-400, device.width-200, 100, 500);//下一条视频
sleep(1000);
}
}
//运行开始
function beforRun(){
log("系统提醒:浏览时长"+DY_czll_lltjsc+"分钟");
if(DY_czll_gbgjcsb){
log("关闭关键词识别");
}else{
if(DY_czll_zpgjc!=null&&DY_czll_zpgjc!=""){
zpgjcList=DY_czll_zpgjc.split(",");
log("关键词数量:"+zpgjcList.length);
for(var i=0;i<zpgjcList.length;i++){
var gjc=zpgjcList;
log("关键词"+(i+1)+":"+gjc);
}
}
}
}
//运行结束
function endRun(){
var ifInLiveRoom=checkInLive();//是否在直播间
var endTime=new Date().getTime();
log("时间提示:运行"+(endTime-startTime)/1000+"秒");
if(ifInLiveRoom){
log("观看直播间:"+llzpNum);
}else{
log("浏览作品:"+llzpNum);
log("点赞作品:"+dzslNum);
log("关注作品:"+gzzbNum);
}
}
//校验是否在直播间页面
function checkInLive(){
var livecommentLab=text("说点什么...").findOne(1000);
if(livecommentLab==null){
return false;
}else{
return true;
}
}
//直播间领取红包和福袋
function clickHbFd(){
var hbmqdLable=text("知道了").findOne(100);
if(hbmqdLable!=null){
hbmqdLable.click();
}
if(!DY_czll_lqhbfd){
return;
}
sleep(5000);
var hbfdLayout=className("android.widget.HorizontalScrollView").findOne(2000);
if(hbfdLayout==null){
log("系统提示:没有红包或福袋,自动跳过");
return;
}
if(hbfdLayout.childCount()==0){
log("系统提示:没有红包或福袋,自动跳过");
return;
}
var hbfdFrameLayout=hbfdLayout.child(0);
if(hbfdFrameLayout.childCount()==0){
log("系统提示:没有红包或福袋,自动跳过");
return;
}
log("系统提示:检测到红包或福袋");
for(var i=0;i<hbfdFrameLayout.childCount();i++){
var hbfdFrameItem=hbfdFrameLayout.child(i);
if(hbfdFrameItem==null){
continue;
}
hbfdFrameItem.click();
sleep(2000);
var ifFd=clickFd(hbfdFrameItem);
if(ifFd){
//是福袋
continue;
}
clickHb();
sleep(2000);
}
suijiSleep();
}
//点击的是福袋
function clickFd(hbfdFrameItem){
var fdView=text("福袋").findOne(1000);
if(fdView==null){
return false;
}
if("2"==DY_czll_fdhbsz){
//只领取红包
log("系统提示:只领取红包,自动关闭福袋");
click(device.width/2+200, device.height/2-300);
return false;
}
if("android.view.View"!=fdView.className()){
click(device.width/2+200, device.height/2-300);
return false;
}
var jrfstView=textContains("加入粉丝团").findOne(1000);
if(jrfstView!=null){
//需要加入粉丝团
if("2"==DY_czll_fdlqtj){
//免费领取的 跳过
log("系统提示:领取福袋需要加入粉丝团,自动跳过");
click(device.width/2+200, device.height/2-300);
return true;
}
var jrfstydbLabel=text("加入粉丝团(1抖币)").findOne(1000);
if(jrfstydbLabel==null){
log("系统提示:加入粉丝团大于1抖币,自动跳过");
click(device.width/2+200, device.height/2-300);
return true;
}
jrfstydbLabel.click();
sleep(2000);
var czLabel=textContains("立即充值").findOne(1000);
if(czLabel!=null){
log("系统提示:抖币余额不足,自动跳过");
click(device.width/2+200, device.height/2-300);
sleep(1000);
click(device.width/2+200, device.height/2-300);
return true;
}else{
log("系统提示:支付1抖币加入粉丝团");
}
}
var qfbplView=text("去发表评论").findOne(1000);
if(qfbplView==null){
log("系统提示:未找到参与福袋评论按钮,自动跳过");
click(device.width/2+200, device.height/2-300);
return true;
}
console.warn("时间限制:"+DY_czll_fdsjxz);
if("3"!=DY_czll_fdsjxz){
//少于1分钟或少于两分钟
var ifLessTime=false;
var djsTitleLabel=text("倒计时").findOne(1000);
if(djsTitleLabel!=null){
var djsParentLayout=djsTitleLabel.parent();
var djsLabel=djsParentLayout.child(1);
if(djsLabel!=null){
var djsTimeStr=djsLabel.text();
log("系统提示:福袋开奖时间"+djsTimeStr);
if("1"==DY_czll_fdsjxz){
//少于1分钟
if(djsTimeStr.indexOf("00:")==0){
ifLessTime=false;
}else{
ifLessTime=true;
}
}else if("2"==DY_czll_fdsjxz){
//少于2分钟
if(djsTimeStr.indexOf("00:")==0||djsTimeStr.indexOf("01:")==0){
ifLessTime=false;
}else{
ifLessTime=true;
}
}
}
}
if(ifLessTime){
log("系统提示:开奖时间太长,自动跳过");
click(device.width/2+200, device.height/2-300);
return true;
}
}
console.warn("福袋概率设置:"+DY_czll_fdzjgl);
if("5"!=DY_czll_fdzjgl){
//中奖概率设置
var gfdNumLabel=textContains("个福袋").findOne(1000);
var yzyNumLabel=textContains("人已参与").findOne(1000);
if(gfdNumLabel!=null&&yzyNumLabel!=null){
var gfdNumStr=gfdNumLabel.text();
var yzyNumStr=yzyNumLabel.text();
log("系统提示:"+gfdNumStr+","+yzyNumStr);
gfdNumStr=gfdNumStr.slice(0,gfdNumStr.indexOf("个福袋"));
yzyNumStr=yzyNumStr.slice(0,yzyNumStr.indexOf("人已参与"));
var gailv=parseInt(parseInt(gfdNumStr)/(parseInt(yzyNumStr)*1.00)*100);
log("系统提示:中奖概率"+gailv+"%");
if("1"==DY_czll_fdzjgl){
//中奖概率大于20
if(gailv<20){
log("系统提示:中奖概率低于20%,自动跳过");
click(device.width/2+200, device.height/2-300);
return true;
}
}else if("2"==DY_czll_fdzjgl){
//中奖概率大于50
if(gailv<50){
log("系统提示:中奖概率低于50%,自动跳过");
click(device.width/2+200, device.height/2-300);
return true;
}
}else if("3"==DY_czll_fdzjgl){
//中奖概率大于80
if(gailv<80){
log("系统提示:中奖概率低于80%,自动跳过");
click(device.width/2+200, device.height/2-300);
return true;
}
}else if("4"==DY_czll_fdzjgl){
//中奖概率大于100
if(gailv<100){
log("系统提示:中奖概率低于100%,自动跳过");
click(device.width/2+200, device.height/2-300);
return true;
}
}
}
}
qfbplView.click();
var huifuEditView = className("android.widget.EditText").findOne(1000);//找到输入框
if(huifuEditView!=null){
var msgStr=huifuEditView.text();
var sendBtn=desc("发送").findOne();
sendBtn.click();
log("评论内容:"+msgStr);
log("系统提示:已参与福袋抽奖");
sleep(2000);
hbfdFrameItem.click();
var hbmqdLable=text("知道了").findOne();
if(hbmqdLable!=null){
suijiSleep();
hbmqdLable.click();
}
}
return true;
}
//点击的是红包
function clickHb(){
var closeBtnArr=desc("关闭").find();
console.warn("关闭按钮的数量:"+closeBtnArr.length);
var closeBtn=closeBtnArr[closeBtnArr.length-1];
if(closeBtn==null){
return;
}
var closeViewGroup=closeBtn.parent();
if("android.view.ViewGroup"!=closeViewGroup.className()){
console.warn("不是 android.view.ViewGroup");
console.warn("关闭按钮的位置:"+closeBtn.bounds().centerY());
if(closeBtn.bounds().centerY()<device.height/2-500){
//不是弹框的关闭
return;
}
closeBtn.click();
return;
}
if("1"==DY_czll_fdhbsz){
//只领取福袋
log("系统提示:只领取福袋,不点击红包");
closeBtn.click();
return;
}
console.warn("时间限制:"+DY_czll_fdsjxz);
if("3"!=DY_czll_fdsjxz){
//少于1分钟或少于两分钟
var ifLessTime=false;
var djsLabel=textContains("可抢").findOne(1000);
if(djsLabel!=null){
var djsTimeStr=djsLabel.text();
log("系统提示:福袋开奖时间"+djsTimeStr);
if("1"==DY_czll_fdsjxz){
ifLessTime=true;
}else if("2"==DY_czll_fdsjxz){
//少于2分钟
if(djsTimeStr.indexOf("1分")==0){
ifLessTime=false;
}else{
ifLessTime=true;
}
}
}
if(ifLessTime){
log("系统提示:开奖时间太长,自动跳过");
closeBtn.click();
return;
}
}
var hbyqwLabel=text("红包已抢完").findOne(50);
var hbmqdLable=text("知道了").findOne(50);
var smlLable=text("手慢了").findOne(50);
var ckdjsqLabel=text("查看大家手气").findOne(50);
var hbygqLabel=text("红包已过期").findOne(50);
while(hbyqwLabel==null&&hbmqdLable==null&&smlLable==null&&ckdjsqLabel==null&&hbygqLabel==null){
log("系统提示:点击抢红包");
console.warn("点击位置:"+device.width/2+","+device.height/2);
click(device.width/2,device.height/2);
hbyqwLabel=text("红包已抢完").findOne(50);
hbmqdLable=text("知道了").findOne(50);
smlLable=text("手慢了").findOne(50);
ckdjsqLabel=text("查看大家手气").findOne(50);
hbygqLabel=text("红包已过期").findOne(50);
}
suijiSleep();
closeBtn.click();
}
//短视频关键字校验
function checkGjz(){
var startCheckTime=new Date().getTime();
var headImgView=findBtnType(3);
var textRootLayout=findBtnType(4);
if(headImgView!=null){
var nickNameStr=headImgView.desc();
log("视频发布者:"+nickNameStr);
}
var ifCheckHave=checkGjzDetail(textRootLayout);
var endCheckTime=new Date().getTime();
var logStr="检测耗时"+(endCheckTime-startCheckTime)/1000+"秒";
if(ifCheckHave){
if(!DY_czll_gbgjcsb){
//开启检测关键词
logStr="检测到关键字,"+logStr;
log(logStr);
}
//随机停留观看时间
tlsjTime=parseInt(Math.random()*(DY_czll_llzpsj_big-DY_czll_llzpsj_small))+DY_czll_llzpsj_small;
tlsjTime=tlsjTime*1000;
log("停留观看"+tlsjTime/1000+"秒");
}else{
logStr="跳过该视频,未检测到关键字,"+logStr;
log(logStr);
sleep(2000);
}
return ifCheckHave;
}
//短视频点赞
function clickZan(){
if(DY_czll_pldz){
var checkItem=findBtnType(2);
if(checkItem!=null){
checkItem.click();
dzslNum++;
log("点赞数量:"+dzslNum);
sleep(500);
}else{
console.warn("未找到点赞按钮");
}
}
}
//短视频关注
function clickGuanzhu(){
if(DY_czll_gzzb){
var checkItem=findBtnType(1);
if(checkItem!=null&&checkItem.childCount()==1){
var gzChildView=checkItem.child(0);
if("android.widget.ImageView"!=gzChildView.className()){
console.warn("已经关注 不能点击按钮 V21.8.0版本会进用户主页");
return;
}
//关注按钮下面有一项加号图片 标记是未关注的 点击进行关注
//V21.8.0版本 已经关注过的人会点击进入主播主页的 避免跳进去
checkItem.click();
gzzbNum++;
log("关注数量:"+gzzbNum);
sleep(500);
}else{
console.warn("未找到关注按钮");
}
}
}
//短视频评论
function clickPinglun(){
if(DY_czll_pldz){
if(1==DY_czll_plfs){
//自定义评论
if(plList==null||plList.length==0){
return;
}
}
var checkItem=findBtnType(5);//获取评论按钮
if(checkItem!=null){
console.warn("找到评论按钮");
checkItem.click();
sleep(1000);
var huifuEditViewArr = className("android.widget.EditText").find();//找到输入框
if(huifuEditViewArr==null||huifuEditViewArr.length==0){
console.warn("未找到评论输入框");
return;
}
console.warn("找到评论输入框数量:"+huifuEditViewArr.length);
//huifuEditViewArr.length-1
//V21.9.0变成0
var huifuEditView = huifuEditViewArr[0];//找到输入框
if(huifuEditView!=null){
console.warn("找到评论输入框");
var msgStr="";
if(plList!=null&&plList.length>0){
var plNum=parseInt(Math.random()*(plList.length));
var plStr=plList[plNum%(plList.length)];
msgStr=plStr;
}
if(1!=DY_czll_plfs){
//智能评论 随机在评论区里找一跳评论
huifuArr = text("回复").find();
if(huifuArr!=null&&huifuArr.length!=0){
var searchCount=3;
while(searchCount>0){
searchCount--;
var sjPostion=parseInt(Math.random()*huifuArr.length);
var huifuBtn=huifuArr[sjPostion];
var huifuParentLayout=huifuBtn.parent();
if(huifuParentLayout!=null&&huifuParentLayout.childCount()>=4){
var plContentLab=huifuParentLayout.child(3);
if("android.widget.TextView"==plContentLab.className()){
var searchMsgStr=plContentLab.text();
if(searchMsgStr.indexOf("IP:")!=-1){
//兼容新版本 增加IP属地
plContentLab=huifuParentLayout.child(4);
if("android.widget.TextView"==plContentLab.className()){
searchMsgStr=plContentLab.text();
}
}
if(searchMsgStr.length>6){
msgStr=searchMsgStr;
break;
}
}
}
}
}
}
if(msgStr==null){
msgStr="";//设置默认个表情
}
msgStr=msgStr+sjEmoji();//设置默认个表情
huifuEditView.setText(msgStr);
var sendBtn=desc("发送").findOne(2000);
if(sendBtn==null){
//兼容V22.0.0
sendBtn=text("发送").findOne();
}
//sendBtn.click();
//V21.9.0变成sendBtn.parent().click();
sendBtn.parent().click();
log("评论内容:"+msgStr);
sleep(500);
var closeBtnArr=desc("关闭").find();
console.warn("关闭按钮数量:"+closeBtnArr.length);
for(var i=0;i<closeBtnArr.length;i++){
var closeBtn=closeBtnArr;
if("android.widget.ImageView"==closeBtn.className()){
closeBtn.click();
}
}
}else{
console.warn("未找到评论输入框");
}
}else{
console.warn("未找到评论按钮");
}
}
}
//短视频检测关键字具体逻辑
function checkGjzDetail(textRootLayout){
var ifCheckHave=false;
if(zpgjcList==null||zpgjcList.length==0){
//关闭关键字识别或没有设置关键词
return true;
}
if(textRootLayout!=null&&textRootLayout.childCount()>0){
for(var i=0;i<textRootLayout.childCount();i++){
var itemLayout=textRootLayout.child(i);
if(itemLayout==null){
continue;
}
if(itemLayout.childCount()>0){
ifCheckHave=checkGjzDetail(itemLayout);
if(ifCheckHave){
break;
}
}else if("android.widget.TextView"==itemLayout.className()){
var textStr=itemLayout.text();
for(var j=0;j<zpgjcList.length;j++){
var gjc=zpgjcList[j];
if(textStr.indexOf(gjc)!=-1){
ifCheckHave=true;
console.warn("检测到关键字text:"+textStr);
break;
}
}
if(ifCheckHave){
break;
}
}
}
}
return ifCheckHave;
}
//直播间关键字
function checkZbjGjz(){
var startCheckTime=new Date().getTime();
var nickNameView=findZbjBtnType(1);
var textRootLayout=findZbjBtnType(2);
if(nickNameView!=null){
var nickNameStr=nickNameView.text();
log("直播者:"+nickNameStr);
}
var ifCheckHave=checkGjzDetail(textRootLayout);
var endCheckTime=new Date().getTime();
var logStr="检测耗时"+(endCheckTime-startCheckTime)/1000+"秒";
if(ifCheckHave){
if(!DY_czll_gbgjcsb){
//开启检测关键词
logStr="检测到关键字,"+logStr;
log(logStr);
}
//随机停留观看时间
tlsjTime=parseInt(Math.random()*(DY_czll_llzpsj_big-DY_czll_llzpsj_small))+DY_czll_llzpsj_small;
tlsjTime=tlsjTime*1000;
log("停留观看"+tlsjTime/1000+"秒");
}else{
logStr="跳过该视频,未检测到关键字,"+logStr;
log(logStr);
sleep(2000);
}
return ifCheckHave;
}
//直播间评论
function clickZbjPinglun(){
if(DY_czll_kqnc){
suijiSleep();
if(1==DY_czll_ncfs){
//自定义评论
if(DY_czll_plnr==null||DY_czll_plnr==""){
return;
}
}
var checkItem=text("说点什么...").findOne(1000);//获取评论按钮
if(checkItem!=null){
var msgStr=DY_czll_plnr;
if(1!=DY_czll_ncfs){
//智能评论 随机在评论区里找一跳评论
var pinglunListViewArr = className("androidx.recyclerview.widget.RecyclerView").find();
console.warn("评论列表数量:"+pinglunListViewArr.length);
var pinglunListView=pinglunListViewArr[0];
if(pinglunListView!=null&&pinglunListView.childCount()!=0){
var searchCount=3;
while(searchCount>0){
searchCount--;
var sjPostion=parseInt(Math.random()*pinglunListView.childCount());
var pinglunRelayout=pinglunListView.child(sjPostion);
var pinglunLab=pinglunRelayout.child(0);
if("android.widget.TextView"==pinglunLab.className()){
var searchMsgStr=pinglunLab.text();
if(searchMsgStr.length>6){
msgStr=searchMsgStr;
if(msgStr.indexOf(":")!=-1){
msgStr=msgStr.slice((msgStr.indexOf(":")+1));
}
break;
}
}
}
}
}
checkItem.parent().click();
sleep(1000);
var huifuEditView = className("android.widget.EditText").findOne(1000);//找到输入框
if(huifuEditView!=null){
huifuEditView.setText(msgStr);
var sendBtn=desc("发送").findOne();
sendBtn.click();
log("评论内容:"+msgStr);
sleep(500);
}
}else{
console.warn("未找到评论按钮");
}
}
}
//查找布局一个同类的控件
function findFirstClassView(rootLayout,findClassName){
if(rootLayout!=null&&rootLayout.childCount()==0){
if(findClassName==rootLayout.className()){
return rootLayout;
}
return null;
}
for(var i=0;i<rootLayout.childCount();i++){
var textLayout= findFirstClassView(rootLayout.child(i),findClassName);
if(textLayout!=null){
return textLayout;
}
}
return null;
}
//随机等待
function suijiSleep(){
var sjTime=parseInt(Math.random()*(DY_czll_llzpsj_big-DY_czll_llzpsj_small))+DY_czll_llzpsj_small;//随机等待s
sjTime=sjTime*1000;
log("系统提示:随机等待"+sjTime/1000+"秒");
sleep(sjTime);
}
//随机后缀表情
function sjEmoji(){
var emojiArr=[];
var postion=parseInt(Math.random()*emojiArr.length);//随机等待s
return emojiArr[postion];
}
发表评论: