浏览量:17612 最近编辑于:2021-06-27 16:39:27
# 公告!
* 本助手只供个人**学习Auto.js**使用,不得**传播**用于**违法或商业用途**,否则造成的一切**后果自负!**
* 下个版本增加答题,正在借鉴大佬的
# 注意事项,必看!
* 1.部分手机**收藏和分享按钮**控件找不到,运行到收藏分享步骤时会报错,请将`articleStudy()`函数中的`CollectAndShare(i)`函数删除;或者打开 Auto.js悬浮窗查看自己手机收藏按钮属性中的'depth',修改代码中的'depth'为自己手机实际值
* 2.**华为**部分机型console不支持,如报错中含有'huawei'关键字请将主函数中`console.show()`函数删除
* 3.请更新auto.js版本至**4.0.0beta或 4.0.1beta**,否则部分手机会有兼容性问题,进入文章页会找不到按钮等控件会**自动退出!**
* 4.尽量**不要在凌晨运行**,凌晨当天新闻没有刷新,请在**早上10点之后运行!**,10点之后当天的文章会出来很多
* 5.运行时请保持**网络畅通**,建议在**WIFI**状态下使用,否则中途加载页面或按钮过慢会**出错**!
# 使用方式
* 下载Auto.js 4.0.0版本apk并安装
* 打开Auto.js导入最新版xxqg.js文件
* 点击右上角“运行”按钮运行(运行时会提示打开无障碍模式)
# 更新日志
## v2.8beta2
* 小视频改回新闻联播
## v2.8beta1
* 新增UI界面,可方便自行修改参数
* 修复了一些问题
## v2.7beta3
* 更新了学习步骤:**百灵小视频->电台+文章->电台**,广播和文章同时进行,大幅缩短时间。
* 新增控制台`console`打印学习进程,之前`toast`弃用
* 现在凌晨也能学习,找不到当天新闻自动学习昨日新闻
* **新增页面检测**,意外情况离开页面会有提示并停止计时,返回界面继续计时
* 修复文章界面有时会加载视频的情况
## v2.6
* 巨大更新,文章学习根据当天日期抓取当天的文章,不再重复学习昨天的文章!
* 修复了某些情况下由于个别手机加载速度慢导致进入文章页抓取不到页面秒退的情况
## v2.5.1
* 修复新闻进入“专题”一栏无法跳出bug
* “电视台”改为“zhongyang广播电视总台”
## v2.5
* app又换了布局导致按钮控件不能用了(无奈- -),这次又修改了控件抓取,收藏分享评论又能用了
* 评论随机,评论过后删除
* 学习文章时滚动,学习时间随机上下波动10秒
* 分享改为app内分享,不用打开微信
## v2.4
* 新增评论功能,可自行修改commentText评论内容
* 将点赞与分享整合进前两篇文章学习过程中,节约了一定时间,不再视频学习完之后单独点赞分享
## v2.3
* 更新了视频学习逻辑,延长第一个视频(30分钟新闻正片)的学习时间,缩短了下面小新闻片段的学习数量和时间,分数更加准确
* 新增总运行时间统计
## v2.2
* 因为最新版app更换了页面布局,所以更改了按钮控件的抓取
## v2.1
* 新增弹窗函数,防止部分手机息屏
* 新增延时函数,单位由之前毫秒统一为秒
## v2.0
* 基于控件点击,不再基于屏幕坐标点击,更具有通用性
* 新增收藏和微信分享(2分)
* 修改若干bug
* “视听学习”更改为“电视台”
# 可修改变量
* `aCount`文章学习篇数,`vCount`小视频学习个数,`aTime`每篇文章学习时长(秒),`vTime`每个小视频学习时长(秒),`rTime`广播收听时长(秒), `cCount`收藏和分享次数
# xxqg-helper
* Auto.js xuexiqiangguo助手,刷文章和视频分(24分 6+6+6+6),收藏和分享(2分 1+1),评论(2分),不支持答题
* 仅限Android系统,需下载auto.js并开启**无障碍模式**
* Android版本至少在5.0之上,**最好7.0之上**,7.0以下**滑动**等函数不能用!
* 测试环境:小米MIX 2S, MIUI 11, Auto.js V4.0.0beta
# 特别感谢
[lgpersonal](https://github.com/lgpersonal/LazyStudy)
传送门:[学习强国助手](https://github.com/ivanwhaf/xxqg-helper)
#v2.8
```javascript
"ui";
/**
* @Description: Auto.js学习强国助手 (6+6)+(6+6)+(1+1+2)=28分
* @version: 2.8
* @Author: Ivan
* @Date: 2019-12-23
*/
var aCount=8;//文章学习篇数
var vCount=6;//小视频学习个数
var cCount=2;//收藏+分享+评论次数
var aTime=90;//每篇文章学习-90秒 90*8=720秒=12分钟
var vTime=16;//每个小视频学习-16秒
var rTime=1080;//广播收听-18分钟
var commentText=["支持党,支持国家!","为实现中华民族伟大复兴而不懈奋斗!","紧跟党走,毫不动摇!","不忘初心,牢记使命","努力奋斗,报效祖国!"];//评论内容,可自行修改,大于5个字便计分
var aCatlog="推荐"//文章学习类别
/**
* @description: 延时函数
* @param: seconds-延迟秒数
* @return: null
*/
function delay(seconds)
{
sleep(1000*seconds);//sleep函数参数单位为毫秒所以乘1000
}
/**
* @description: 文章学习计时(弹窗)函数
* @param: n-文章标号 seconds-学习秒数
* @return: null
*/
function article_timing(n,seconds)
{
h=device.height;//屏幕高
w=device.width;//屏幕宽
x=(w/3)*2;
h1=(h/6)*5;
h2=(h/6);
for(var i=0;i<seconds;i++)
{
while(!textContains("欢迎发表你的观点").exists())//如果离开了文章界面则一直等待
{
console.error("当前已离开第"+(n+1)+"文章界面,请重新返回文章页面...");
delay(2);
}
if(i%5==0)//每5秒打印一次学习情况
{
console.info("第"+(n+1)+"篇文章已经学习"+(i+1)+"秒,剩余"+(seconds-i-1)+"秒!");
}
delay(1);
if(i==0)//每10秒滑动一次,如果android版本<7.0请将此滑动代码删除
{
toast("这是防息屏toast,请忽视-。-");
if(i<=seconds/2)
{
swipe(x,h1,x,h2,500);//向下滑动
}
else
{
swipe(x,h2,x,h1,500);//向上滑动
}
}
}
}
/**
* @description: 视频学习计时(弹窗)函数
* @param: n-视频标号 seconds-学习秒数
* @return: null
*/
function video_timing_bailing(n,seconds)
{
for(var i=0;i<seconds;i++)
{
while(!textContains("分享").exists())//如果离开了百灵小视频界面则一直等待
{
console.error("当前已离开第"+(n+1)+"个百灵小视频界面,请重新返回视频");
delay(2);
}
delay(1);
console.info("第"+(n+1)+"个小视频已经观看"+(i+1)+"秒,剩余"+(seconds-i-1)+"秒!");
}
}
/**
* @description: 新闻联播小视频学习计时(弹窗)函数
* @param: n-视频标号 seconds-学习秒数
* @return: null
*/
function video_timing_news(n,seconds)
{
for(var i=0;i<seconds;i++)
{
while(!textContains("欢迎发表你的观点").exists())//如果离开了百灵小视频界面则一直等待
{
console.error("当前已离开第"+(n+1)+"个新闻小视频界面,请重新返回视频");
delay(2);
}
delay(1);
console.info("第"+(n+1)+"个小视频已经观看"+(i+1)+"秒,剩余"+(seconds-i-1)+"秒!");
}
}
/**
* @description: 广播学习计时(弹窗)函数
* @param: r_time-已经收听的时间 seconds-学习秒数
* @return: null
*/
function radio_timing(r_time,seconds)
{
for(var i=0;i<seconds;i++)
{
while(!desc("学习").exists())//如果离开了强国主页
{
console.error("当前已离开主页,请返回并确保电台仍在播放...");
delay(2);
}
delay(1);
if(i%5==0)//每5秒打印一次信息
{
console.info("广播已经收听"+(i+1+r_time)+"秒,剩余"+(seconds-i-1)+"秒!");
}
if(i==0)//每15秒弹一次窗防止息屏
{
toast("这是防息屏弹窗,可忽略-. -");
}
}
}
/**
* @description: 日期转字符串函数
* @param: y,m,d 日期数字 2019 1 1
* @return: s 日期字符串 "2019-xx-xx"
*/
function dateToString(y,m,d)
{
var year=y.toString();
if((m+1)<10){
var month="0"+(m+1).toString();
}
else{
var month=(m+1).toString();
}
if(d<10){
var day="0"+d.toString();
}
else{
var day=d.toString();
}
var s=year+"-"+month+"-"+day;//年-月-日
return s;
}
/**
* @description: 获取当天日期字符串函数
* @param: null
* @return: s 日期字符串 "2019-xx-xx"
*/
function getTodayDateString()
{
var date=new Date();
var y=date.getFullYear();
var m=date.getMonth();
var d=date.getDate();
var s=dateToString(y,m,d);//年-月-日
return s
}
/**
* @description: 获取昨天日期字符串函数
* @param: null
* @return: s 日期字符串 "2019-xx-xx"
*/
function getYestardayDateString()
{
var date=new Date();
var y=date.getFullYear();
var m=date.getMonth();
var d=date.getDate();
if(m==0 && d==1)//如果是1月1号
{
y=y-1;//年数减1
}
var day_in_month=[31,28,31,40,31,30,31,31,30,31,30,31];
if(y@0==0 || (y%4==0 && y0!=0))//如果是闰年
{
day_in_month[1]=29;//闰年二月有29天
}
if(d==1){
d=day_in_month[m-1];//上个月的最后一天
m=m-1;
}
else{
d=d-1;
}
var s=dateToString(y,m,d);//年-月-日
return s
}
/**
* @description: 文章学习函数 (阅读文章+文章学习时长)---6+6=12分
* @param: null
* @return: null
*/
function articleStudy(aCount,aTime,cCount,aCatlog)
{
while(!desc("学习").exists());//等待加载出主页
desc("学习").click();//点击主页正下方的"学习"按钮
delay(2);
var listView=className("ListView");//获取文章ListView控件用于翻页
click(aCatlog);
delay(2);
var zt_flag=false;//判断进入专题界面标志
var fail=0;//点击失败次数
var date_string=getTodayDateString();//获取当天日期字符串
for(var i=0,t=0;i<aCount;)
{
if(click(date_string,t)==true)//如果点击成功则进入文章页面,不成功意味着本页已经到底,要翻页
{
delay(1.5);//等待加载出界面
if(desc("展开").exists())//如果存在“展开”则认为进入了文章栏中的视频界面需退出
{
console.warn("进入了视频界面,即将退出并进下一篇文章!");
t++;
back();
delay(1);
click("电台");
delay(1);
click("中国之声");
console.log("因为广播被打断,正在重新收听广播...");
delay(1.5);
back();
while(!desc("学习").exists());
desc("学习").click();
delay(1);
continue;
}
var n=0;
while(!textContains("欢迎发表你的观点").exists())//如果没有找到评论框则认为没有进入文章界面,一直等待
{
delay(1);
console.warn("正在等待加载文章界面...");
if(n>2)//等待超过3秒则认为进入了专题界面,退出进下一篇文章
{
console.warn("没找到评论框!该界面非文章界面!");
zt_flag=true;
break;
}
n++;
}
if(zt_flag==true)//进入专题页标志
{
console.warn("进入了专题界面,即将退出并进下一篇文章!")
t++;
back();
delay(2);
zt_flag=false;
continue;
}
console.log("正在学习第"+(i+1)+"篇文章...");
fail=0;//失败次数清0
//var wave=random(-5,5);//上下随机波动5秒
article_timing(i,aTime);
if(i<cCount)//收藏分享2篇文章
{
CollectAndShare(i);//收藏+分享 若c运行到此报错请注释本行!
Comment(i);//评论
}
back();//返回主界面
while(!desc("学习").exists());//等待加载出主页
delay(1);
i++;
t++;//t为实际点击的文章控件在当前布局中的标号,和i不同,勿改动!
}
else
{
if(i==0)//如果第一次点击就没点击成功则认为首页无当天文章
{
date_string=getYestardayDateString();
console.warn("首页没有找到当天文章,即将学习昨日新闻!");
continue;
}
if(fail>3)//连续翻几页没有点击成功则认为今天的新闻还没出来,学习昨天的
{
date_string=getYestardayDateString();
console.warn("没有找到当天文章,即将学习昨日新闻!");
continue;
}
if(!textContains(date_string).exists())
{
fail++;//失败次数加一
}
listView.scrollForward();//向下滑动(翻页)
t=0;
delay(1.5);
}
}
}
/**
* @description: “百灵”小视频学习函数
* @param: vCount,vTime
* @return: null
*/
function videoStudy_bailing(vCount,vTime)
{
h=device.height;//屏幕高
w=device.width;//屏幕宽
x=(w/3)*2;//横坐标2分之3处
h1=(h/6)*5;//纵坐标6分之5处
h2=(h/6);//纵坐标6分之1处
click("百灵");
delay(2);
click("竖");
delay(2);
gesture(500,[w/2,h/4],[w/2,h/3],[w/2,h/4]);//稍微滑动一下,防止检测
delay(1);
var a=className("FrameLayout").depth(23).findOnce(0);//根据控件搜索视频框,但部分手机不适配,改用下面坐标点击
a.click();
//click((w/2)+random()*10,h/4);//坐标点击第一个视频
delay(1);
for(var i=0;i<vCount;i++)
{
console.log("正在观看第"+(i+1)+"个小视频");
video_timing_bailing(i,vTime);//观看每个小视频
if(i!=vCount-1){
swipe(x,h1,x,h2,500);//往下翻(纵坐标从5/6处滑到1/6处)
}
}
back();
delay(2);
}
/**
* @description:新闻联播小视频学习函数
* @param: vCount,vTime
* @return: null
*/
function videoStudy_news(vCount,vTime)
{
click("电视台");
delay(2)
click("联播频道");
delay(1);
var listView=className("ListView");//获取listView视频列表控件用于翻页
for(var i=0,t=1;i<vCount;)
{
if(click("中央广播电视总台",t)==true)
{
console.log("即将学习第"+(i+1)+"个视频!");
video_timing_news(i,vTime);//学习每个新闻联播小片段
back();//返回联播频道界面
while(!desc("学习").exists());//等待加载出主页
delay(1);
i++;
t++;//t为实际点击的文章在listView控件中的标号,和i不同,勿改动!
if(i==3)
{
listView.scrollForward();//翻页
delay(1);
t=1
}
}
else
{
listView.scrollForward();//翻页
delay(1);
t=2;
}
}
}
/**
* @description: 听“电台”新闻广播函数 (视听学习+视听学习时长)---6+6=12分
* @param: null
* @return: null
*/
function listenToRadio()
{
click("电台");
delay(2);
click("听新闻广播");
delay(2);
click("中国之声");
console.log("正在收听“中国之声”广播...");
delay(2);
back();//返回电台界面
}
/**
* @description: 收藏加分享函数 (收藏+分享)---1+1=2分
* @param: i-文章标号
* @return: null
*/
function CollectAndShare(i)
{
while(!textContains("欢迎发表你的观点").exists())//如果没有找到评论框则认为没有进入文章界面,一直等待
{
delay(1);
console.log("等待进入文章界面")
}
console.log("正在进行第"+(i+1)+"次收藏和分享...");
var textOrder=text("欢迎发表你的观点").findOnce().drawingOrder();
var shouOrder=textOrder+2;
var zhuanOrder=textOrder+3;
var collectIcon=className("ImageView").filter(function(iv){
return iv.drawingOrder()==shouOrder;
}).findOnce();
var shareIcon=className("ImageView").filter(function(iv){
return iv.drawingOrder()==zhuanOrder;
}).findOnce();
//var collectIcon = classNameContains("ImageView").depth(10).findOnce(0);//右下角收藏按钮
collectIcon.click();//点击收藏
console.info("收藏成功!");
delay(1);
collectIcon.click();//再次点击,取消收藏
console.info("取消收藏!");
delay(1);
//var shareIcon = classNameContains("ImageView").depth(10).findOnce(1);//右下角分享按钮
shareIcon.click();//点击分享
while(!textContains("分享到学习强").exists());//等待弹出分享选项界面
delay(1);
click("分享到学习强国");
delay(2);
console.info("分享成功!");
back();//返回文章界面
delay(1);
}
/**
* @description: 评论函数---2分
* @param: i-文章标号
* @return: null
*/
function Comment(i)
{
while(!textContains("欢迎发表你的观点").exists())//如果没有找到评论框则认为没有进入文章界面,一直等待
{
delay(1);
console.log("等待进入文章界面")
}
click("欢迎发表你的观点");//单击评论框
console.log("正在进行第"+(i+1)+"次评论...");
delay(1);
var num=random(0,commentText.length-1)//随机数
setText(commentText[num]);//输入评论内容
delay(1);
click("发布");//点击右上角发布按钮
console.info("评论成功!");
delay(2);
click("删除");//删除该评论
delay(2);
click("确认");//确认删除
console.info("评论删除成功!");
delay(1);
}
/**
* @description: 启动app
* @param: null
* @return: null
*/
function start_app()
{
console.setPosition(0,device.height/4);//部分华为手机console有bug请注释本行
console.show();//部分华为手机console有bug请注释本行
console.log("正在启动app...");
if(!launchApp("学习强国"))//启动学习强国app
{
console.error("找不到学习强国App!");
return;
}
while(!desc("学习").exists())
{
console.log("正在等待加载出主页");
delay(1);
}
delay(1);
}
//主函数
function main(aCount,aTime,vCount,vTime,rTime,cCount,aCatlog)
{
start_app();//启动app
var start=new Date().getTime();//程序开始时间
videoStudy_news(vCount,vTime);//看小视频
listenToRadio();//听电台广播
var r_start=new Date().getTime();//广播开始时间
articleStudy(aCount,aTime,cCount,aCatlog);//学习文章,包含点赞、分享和评论
listenToRadio();//继续听电台
var end=new Date().getTime();//广播结束时间
var radio_time=(parseInt((end-r_start)/1000));//广播已经收听的时间
radio_timing(parseInt((end-r_start)/1000),rTime-radio_time);//广播剩余需收听时间
end=new Date().getTime();
console.log("运行结束,共耗时"+(parseInt(end-start))/1000+"秒");
}
auto.waitFor();//等待获取无障碍辅助权限
ui.layout(
<vertical>
<text textSize="16sp" textColor="red" text="欢迎使用xxqg-helper!"/>
<button id="all" h="80" text="完整运行"/>
<button id="article" text="只阅读文章(含收藏分享)"/>
<button id="vr" text="只看视频和听广播"/>
<button id="csc" text="只收藏分享评论"/>
<button id="stop" text="停止运行"/>
<horizontal>
<text textSize="16sp" textColor="black" text="文章数量:"/>
<input id="acount" text=""/>
</horizontal>
<horizontal>
<text textSize="16sp" textColor="black" text="视频数量:"/>
<input id="vcount" text=""/>
</horizontal>
<horizontal>
<text textSize="16sp" textColor="black" text="文章时长(秒):"/>
<input id="atime" text=""/>
</horizontal>
<horizontal>
<text textSize="16sp" textColor="black" text="视频时长(秒):"/>
<input id="vtime" text=""/>
</horizontal>
<horizontal>
<text textSize="16sp" textColor="black" text="广播收听总时长(秒):"/>
<input id="rtime" text=""/>
</horizontal>
<horizontal>
<text textSize="16sp" textColor="black" text="文章学习类别:"/>
<input id="acatlog" text=""/>
</horizontal>
<button w="200" layout_gravity="center" id="about" text="关于本助手"/>
</vertical>
);
ui.acount.setText(aCount.toString());
ui.vcount.setText(vCount.toString());
ui.atime.setText(aTime.toString());
ui.vtime.setText(vTime.toString());
ui.rtime.setText(rTime.toString());
ui.acatlog.setText(aCatlog.toString());
var thread=null;
ui.all.click(function(){
if(thread!=null && thread.isAlive()){
alert("注意!","当前程序正在运行,请结束之前进程");
return;
}
toast("开始完整运行");
thread=threads.start(function(){
aCount=ui.acount.getText()
vCount=ui.vcount.getText()
aTime=ui.atime.getText()
vTime=ui.vtime.getText()
rTime=ui.rtime.getText()
aCatlog=ui.acatlog.getText()
main(aCount,aTime,vCount,vTime,rTime,cCount,aCatlog);
});
});
ui.article.click(function(){
if(thread!=null && thread.isAlive()){
alert("注意!","当前程序正在运行,请结束之前进程");
return;
}
toast("开始看文章");
thread=threads.start(function(){
start_app();
aCount=ui.acount.getText()
aTime=ui.atime.getText()
aCatlog=ui.acatlog.getText()
articleStudy(aCount,aTime,cCount,aCatlog);
});
});
ui.vr.click(function(){
if(thread!=null && thread.isAlive()){
alert("注意!","当前程序正在运行,请结束之前进程");
return;
}
toast("开始看视频和听广播");
thread=threads.start(function(){
start_app();
vCount=ui.vcount.getText()
vTime=ui.vtime.getText()
rTime=ui.rtime.getText()
videoStudy_news(vCount,vTime);
listenToRadio();
radio_timing(0,rTime);
});
});
ui.csc.click(function(){
if(thread!=null && thread.isAlive()){
alert("注意!","当前程序正在运行,请结束之前进程");
return;
}
thread=threads.start(function(){
start_app();
for(let i=0;i<cCount;i++)//收藏分享2篇文章
{
CollectAndShare(i);//收藏+分享
Comment(i);//评论
}
console.hide()
});
});
ui.stop.click(function(){
if(thread!=null && thread.isAlive()){
threads.shutDownAll();
toast("已停止运行!")
console.hide();
}
else{
toast("当前没有线程在运行!")
}
});
ui.about.click(function(){
alert("xxqg-helper","本脚本只可用于个人学习Auto.js,不得用于一切商业或违法用途,否则追究责任!造成的后果自负!");
});
```
#v2.7版本
```javascript
/**
* @Description: Auto.js学习强国助手 (6+6)+(6+6)+(1+1+2)=28分
* @version: 2.7 beta3
* @Author: Ivan
* @Date: 2019-11-7
*/
var aCount=8;//文章学习篇数
var vCount=6;//“百灵”小视频学习个数
var cCount=2;//收藏+分享+评论次数
var aTime=93;//每篇文章学习-90秒 90*8=720秒=12分钟
var rTime=1080;//广播收听-18分钟
var vTime=16;//每个“百灵”小视频学习-16秒
var commentText=["支持党,支持国家!","为实现中华民族伟大复兴而不懈奋斗!","紧跟党走,毫不动摇!","不忘初心,牢记使命","努力奋斗,回报祖国!"];//评论内容,可自行修改,大于5个字便计分
/**
* @description: 延时函数
* @param: seconds-延迟秒数
* @return: null
*/
function delay(seconds)
{
sleep(1000*seconds);//sleep函数参数单位为毫秒所以乘1000
}
/**
* @description: 文章学习计时(弹窗)函数
* @param: n-文章标号 seconds-学习秒数
* @return: null
*/
function article_timing(n,seconds)
{
h=device.height;//屏幕高
w=device.width;//屏幕宽
x=(w/3)*2;
h1=(h/6)*5;
h2=(h/6);
for(var i=0;i<seconds;i++)
{
while(!textContains("欢迎发表你的观点").exists())//如果离开了文章界面则一直等待
{
console.error("当前已离开第"+(n+1)+"文章界面,请重新返回文章页面...");
delay(1);
}
if(i%5==0)//每5秒打印一次学习情况
{
console.info("第"+(n+1)+"篇文章已经学习"+(i+1)+"秒,剩余"+(seconds-i-1)+"秒!");
}
delay(1);
if(i==0)//每10秒滑动一次,如果android版本<7.0请将此滑动代码删除
{
toast("这是防息屏toast,请忽视-。-");
if(i<=seconds/2)
{
swipe(x,h1,x,h2,500);//向下滑动
}
else
{
swipe(x,h2,x,h1,500);//向上滑动
}
}
}
}
/**
* @description: 视频学习计时(弹窗)函数
* @param: n-视频标号 seconds-学习秒数
* @return: null
*/
function video_timing(n,seconds)
{
for(var i=0;i<seconds;i++)
{
while(!textContains("分享").exists())//如果离开了百灵小视频界面则一直等待
{
console.error("当前已离开百灵小视频界面,请重新返回视频...");
delay(2);
}
delay(1);
console.info("第"+(n+1)+"个小视频已经观看"+(i+1)+"秒,剩余"+(seconds-i-1)+"秒!");
}
}
/**
* @description: 广播学习计时(弹窗)函数
* @param: r_time-已经收听的时间 seconds-学习秒数
* @return: null
*/
function radio_timing(r_time,seconds)
{
for(var i=0;i<seconds;i++)
{
while(!desc("学习").exists())//如果离开了强国主页
{
console.error("当前已离开主页,请返回并确保电台仍在播放...");
delay(1);
}
delay(1);
if(i%5==0)//每5秒打印一次信息
{
console.info("广播已经收听"+(i+1+r_time)+"秒,剩余"+(seconds-i-1)+"秒!");
}
if(i==0)//每15秒弹一次窗防止息屏
{
toast("这是防息屏弹窗,可忽略-. -");
}
}
}
/**
* @description: 日期转字符串函数
* @param: y,m,d 日期数字 2019 1 1
* @return: s 日期字符串 "2019-xx-xx"
*/
function dateToString(y,m,d)
{
var year=y.toString();
if((m+1)<10){
var month="0"+(m+1).toString();
}
else{
var month=(m+1).toString();
}
if(d<10){
var day="0"+d.toString();
}
else{
var day=d.toString();
}
var s=year+"-"+month+"-"+day;//年-月-日
return s;
}
/**
* @description: 获取当天日期字符串函数
* @param: null
* @return: s 日期字符串 "2019-xx-xx"
*/
function getTodayDateString()
{
var date=new Date();
var y=date.getFullYear();
var m=date.getMonth();
var d=date.getDate();
var s=dateToString(y,m,d);//年-月-日
return s
}
/**
* @description: 获取昨天日期字符串函数
* @param: null
* @return: s 日期字符串 "2019-xx-xx"
*/
function getYestardayDateString()
{
var date=new Date();
var y=date.getFullYear();
var m=date.getMonth();
var d=date.getDate();
if(m==0 && d==1)//如果是1月1号
{
y=y-1;//年数减1
}
var day_in_month=[31,28,31,40,31,30,31,31,30,31,30,31];
if(y@0==0 || (y%4==0 && y0!=0))//如果是闰年
{
day_in_month[1]=29;//闰年二月有29天
}
if(d==1){
d=day_in_month[m-1];//上个月的最后一天
m=m-1;
}
else{
d=d-1;
}
var s=dateToString(y,m,d);//年-月-日
return s
}
/**
* @description: 文章学习函数 (阅读文章+文章学习时长)---6+6=12分
* @param: null
* @return: null
*/
function articleStudy()
{
while(!desc("学习").exists());//等待加载出主页
desc("学习").click();//点击主页正下方的"学习"按钮
delay(2);
var listView=className("ListView");//获取文章ListView控件用于翻页
click("推荐");
delay(2);
var flag=false;//判断进入专题界面标志
var fail=0;
var s=getTodayDateString();//获取当天日期字符串
for(var i=0,t=0;i<aCount;)
{
if(click(s,t)==true)//如果点击成功则进入文章页面,不成功意味着本页已经到底,要翻页
{
delay(1.5);//等待加载出界面
if(desc("展开").exists())//如果存在“展开”则认为进入了文章栏中的视频界面需退出
{
delay(1);
console.warn("进入了视频界面,即将退出并进下一篇文章!");
t++;
back();
delay(1);
click("电台");
delay(1);
click("中国之声");
console.log("因为广播被打断,正在重新收听广播...");
delay(2);
back();
while(!desc("学习").exists());
desc("学习").click();
delay(1);
continue;
}
var n=0;
while(!textContains("欢迎发表你的观点").exists())//如果没有找到评论框则认为没有进入文章界面,一直等待
{
delay(1);
n++;
console.warn("没找到评论框!该界面非文章界面!");
if(n>3)//等待超过4秒则认为进入了专题界面,退出进下一篇文章
{
flag=true;
break;
}
}
if(flag==true)//进入专题页的标志
{
console.warn("进入了专题界面,即将退出并进下一篇文章!")
t++;
back();
delay(2);
flag=false;
continue;
}
console.log("正在学习第"+(i+1)+"篇文章...");
fail=0;//失败清0
var wave=random(-5,5);//上下随机波动5秒
article_timing(i,aTime+wave);
if(i<cCount)//收藏分享2篇文章
{
CollectAndShare(i);//收藏+分享。若运行到此报错请注释本行!
comment(i);//评论
}
back();//返回主界面
while(!desc("学习").exists());//等待加载出主页
delay(2);
i++;
t++;//t为实际点击的文章在listView控件中的标号,和i不同,勿改动!
}
else
{
if(i==0)//如果第一次点击就没点击成功则认为首页无当天文章
{
s=getYestardayDateString();
console.warn("首页没有找到当天文章,即将学习昨日新闻!");
continue;
}
if(fail>5)
{
s=getTodayDateString();
console.warn("昨天新闻也没找到..继续学今天的吧");
t=0;
fail=0;
continue;
}
if(fail>4)//连续翻几页没有点击成功则认为今天的新闻还没出来,学习昨天的
{
s=getYestardayDateString();
delay(1);
console.warn("没有找到当天文章,即将学习昨日新闻!");
t=0;
continue;
}
listView.scrollForward();//向下滑动(翻页)
fail++;//翻页次数加一
delay(2);
t=1;
}
}
}
/**
* @description: “百灵”小视频学习函数
* @param: null
* @return: null
*/
function videoStudy()
{
h=device.height;//屏幕高
w=device.width;//屏幕宽
x=(w/3)*2;//横坐标2分之3处
h1=(h/6)*5;//纵坐标6分之5处
h2=(h/6);//纵坐标6分之1处
click("百灵");
delay(2);
click("竖");
delay(2);
//var a=className("FrameLayout").depth(23).findOnce(0);//根据控件搜索视频框,但部分手机不适配,改用下面坐标点击
//a.click();//点击小视频
click(w/2,h/4);//坐标点击第一个视频
delay(2);
for(var i=0;i<vCount;i++)
{
console.log("正在观看第"+(i+1)+"个小视频");
video_timing(i,vTime);//观看每个小视频
if(i!=vCount-1){
swipe(x,h1,x,h2,500);//往下翻(纵坐标从5/6处滑到1/6处)
}
}
back();
delay(2);
}
/**
* @description: 听“电台”新闻广播函数 (视听学习+视听学习时长)---6+6=12分
* @param: null
* @return: null
*/
function listenToRadio()
{
click("电台");
delay(2);
click("听新闻广播");
delay(2);
click("中国之声");
console.log("正在收听“中国之声”广播...");
delay(3);
back();//返回电台界面
delay(1);
}
/**
* @description: 收藏加分享函数 (收藏+分享)---1+1=2分
* @param: i-文章标号
* @return: null
*/
function CollectAndShare(i)
{
console.log("正在进行第"+(i+1)+"次收藏和分享...");
var collectIcon = classNameContains("ImageView").depth(10).findOnce(0);//右下角收藏按钮
collectIcon.click();//点击收藏
delay(2);
console.info("收藏成功!");
var shareIcon = classNameContains("ImageView").depth(10).findOnce(1);//右下角分享按钮
shareIcon.click();//点击分享
while(!textContains("分享到学习强").exists());//等待弹出分享选项界面
delay(2);
click("分享到学习强国");
delay(2);
console.info("分享成功!");
back();//返回文章界面
delay(2);
}
/**
* @description: 评论函数---2分
* @param: i-文章标号
* @return: null
*/
function comment(i)
{
click("欢迎发表你的观点");//单击评论框
console.log("正在进行第"+(i+1)+"次评论...");
delay(1);
var num=random(0,commentText.length-1)//随机数
setText(commentText[num]);//输入评论内容
delay(1);
click("发布");//点击右上角发布按钮
console.info("评论成功!");
delay(2);
click("删除");//删除该评论
delay(2);
click("确认");//确认删除
console.info("评论删除成功!");
delay(2);
}
//主函数
function main()
{
auto.waitFor();//等待获取无障碍辅助权限
console.show();//部分华为手机console有bug请注释本行
console.setPosition(0,device.height/4);//部分华为手机console有bug请注释本行
console.log("学习强国助手启动中...");
if(!launchApp("学习强国"))//启动学习强国app
{
console.error("找不到学习强国App!");
}
while(!desc("学习").exists()){
console.log("正在等待加载出主页...");
delay(1);
}
delay(2);
var start=new Date().getTime();//程序开始时间
videoStudy();//看“百灵”小视频
var r_start=new Date().getTime();//广播开始时间
listenToRadio();//听电台新闻
articleStudy();//学习文章,包含点赞分享和评论
listenToRadio();
var end=new Date().getTime();
var radio_time=(parseInt((end-r_start)/1000));//广播已经收听的时间
radio_timing(parseInt((end-r_start)/1000),rTime-radio_time);//rTime-radio_time为剩余需要收听的广播时间
var end=new Date().getTime();
console.log("运行结束,共耗时"+(parseInt(end-start))/1000+"秒");
}
main();
```
#v2.6版本
```javascript
/*
* @Description: Auto.js学习强国助手 (6+6)+(6+6)+(1+1+2)=28分
* @version: 2.6
* @Author: Ivan
* @Date: 2019-11-2
*/
var aCount=10;//文章学习篇数
var vCount=7;//视频学习个数
var cCount=2;//收藏+分享+评论次数
var aTime=75;//每篇文章学习-72秒 72*10=12分钟
var VTime=1080;//新闻联播正片学习-18分钟
var vTime=12;//新闻联播每个小新闻学习-10秒
var wTime=5;//等待强国app启动完毕的时间-5秒
var commentText=["支持党,支持国家!","为实现中华民族伟大复兴而不懈奋斗!","紧跟党走,毫不动摇!","不忘初心,牢记使命","努力奋斗,回报祖国!"];//评论内容,可自行修改,大于5个字便计分
/*
* @description: 延时函数
* @param: seconds-延迟秒数
* @return: null
*/
function delay(seconds)
{
sleep(1000*seconds);//sleep函数参数单位为毫秒所以乘1000
}
/*
* @description: 文章学习计时(弹窗)函数
* @param: n-文章标号 seconds-学习秒数
* @return: null
*/
function article_timing(n,seconds)
{
for(var i=0;i<seconds;i++)
{
delay(1);
toast("第"+(n+1)+"篇文章"+"已经学习"+(i+1)+"秒,剩余"+(seconds-i-1)+"秒!");
if(i==0)//每10秒滑动一次
{
if(i<=seconds/2)
{
swipe(300,1000,300,500,500);//向下滑动
}
else
{
swipe(300,500,300,1000,500);//向上滑动
}
}
}
}
/*
* @description: 视频学习计时(弹窗)函数
* @param: n-视频标号 seconds-学习秒数
* @return: null
*/
function video_timing(n,seconds)
{
for(var i=0;i<seconds;i++)
{
delay(1);
toast("第"+(n+1)+"个视频"+"已经学习"+(i+1)+"秒,剩余"+(seconds-i-1)+"秒!");
}
}
/*
* @description: 文章学习函数 (阅读文章+文章学习时长)---6+6=12分
* @param: null
* @return: null
*/
function articleStudy()
{
while(!desc("学习").exists());//等待加载出主页
desc("学习").click();//点击主页正下方的"学习"按钮
delay(2);
var listView=className("ListView");//获取文章ListView控件用于翻页
click("推荐");
delay(2);
var date=new Date();
var y=date.getFullYear().toString();
if((date.getMonth()+1)<10)
{
var m="0"+(date.getMonth()+1).toString();
}
else{
var m=(date.getMonth()+1).toString();
}
if(date.getDate()<10)
{
var d="0"+date.getDate().toString();
}
else{
var d=date.getDate().toString();
}
var s=y+"-"+m+"-"+d;//年-月-日
for(var i=0,t=0;i<aCount;)
{
if(click(s,t)==true)//如果点击成功则进入文章页面,不成功意味着本页已经到底,要翻页
{
delay(2);
var a = classNameContains("TextView").depth(10).textContains("欢迎发表你的观点").findOnce(0);
if(a==null)//如果没找到评论框则认为进入了专题界面需要返回重新找下一篇
{
delay(4);
var a = classNameContains("TextView").depth(10).textContains("欢迎发表你的观点").findOnce(0);
if(a==null)
{
t++;
back();
delay(2);
continue;
}
}
var wave=Math.round(Math.random()*10)-5;//上下随机波动几秒
article_timing(i,aTime+wave);
if(i<cCount)//收藏分享2篇文章
{
CollectAndShare(i);//收藏+分享
comment();
}
back();//返回要闻界面
while(!desc("学习").exists());//等待加载出主页
delay(2);
i++;
t++;//t为实际点击的文章在listView控件中的标号,和i不同,勿改动!
}
else
{
listView.scrollForward();//向下滑动(翻页)
delay(3);
t=1;
}
}
}
/*
* @description: 视频学习函数 (视听学习+视听学习时长)---6+6=12分
* @param: null
* @return: null
*/
function videoStudy()
{
click("电视台");//点击主页正下方的"电视台"按钮 (1.0版本为"视听学习")
delay(2);
click("联播频道");//点击联播频道看新闻联播
delay(2);
var listView=className("ListView");//获取listView视频列表控件用于翻页
for(var i=0,t=0;i<vCount;)
{
if(click("中央广播电视总台",t)==true)
{
if(i==0)
{
delay(3);
var a = classNameContains("View").depth(20).descContains("《新闻联播》").findOnce(0);//没有找到新闻联播则认为进入了别的视频
if(a==null)
{
back();
delay(2);
t++;
continue;
}
}
toast("即将学习第"+(i+1)+"个视频!");
if(i==0){
video_timing(i,VTime);//学习新闻联播正片18分钟
}
else{
video_timing(i,vTime);//学习新闻联播小片段10秒
}
back();//返回联播频道界面
while(!desc("学习").exists());//等待加载出主页
delay(2);
i++;
t++;//t为实际点击的文章在listView控件中的标号,和i不同,勿改动!
}
else
{
listView.scrollForward();//翻页
delay(2);
t=2;
}
}
}
/*
* @description: 收藏加分享函数 (收藏+分享)---1+1=2分
* @param: i-文章标号
* @return: null
*/
function CollectAndShare(i)
{
toast("正在进行第"+(i+1)+"次收藏和分享!");
var collectIcon = classNameContains("ImageView").depth(10).findOnce(0);//右下角收藏按钮(2.1版本的depth为10)
collectIcon.click();//点击收藏
delay(2);
var shareIcon = classNameContains("ImageView").depth(10).findOnce(1);//右下角分享按钮
shareIcon.click();//点击分享
while(!textContains("分享到学习强").exists());//等待弹出分享选项界面
delay(2);
click("分享到学习强国");
delay(2);
back();
delay(2);
/*原来是分享给微信好友
while(!textContains("分享给微信").exists());//等待弹出分享选项界面
delay(1);
click("分享给微信\n好友");
while(!text("多选").exists());//等待跳转到微信界面(微信界面含有"多选"字样)
delay(2);
back();//跳转到微信之后返回就行了,算一次分享
delay(2);
*/
}
/*
* @description: 评论函数---2分
* @param: null
* @return: null
*/
function comment()
{
//var textView = classNameContains("TextView").depth(2).findOnce(0);//评论框
//textView.click();//单击评论框
click("欢迎发表你的观点");//单击评论框
delay(1);
var num=Math.round(Math.random()*(commentText.length-1));//随机数
setText(commentText[num]);//输入评论内容
delay(1);
click("发布");//点击右上角发布按钮
delay(2);
click("删除");//删除该评论
delay(2);
click("确认");//确认删除
delay(2);
}
function main()
{
auto.waitFor();//等待获取无障碍辅助权限
toast("学习强国助手启动中");
if(!launchApp("学习强国"))//启动学习强国app
{
toast("找不到学习强国App!")
}
delay(wTime);//等应用启动完毕
var start=new Date().getTime();
articleStudy();//文章学习,包含点赞分享和评论
videoStudy();//视频学习
var end=new Date().getTime();
toast("运行结束"+"共耗时"+(end-start)/1000+"秒");
}
main();
```
评论