auto_xuexiqiangguo 是一款自动化学习工具 每天可达满分🚩
本项目旨在解放双手 让大家有更多时间做更有意义的事💪
查看指导手册了解如何安装
⭐Give A Star. 如果对你有帮助的话,希望您可以给一颗星星,推荐给更多的好友
目前无法应对新版的滑动验证,用出现滑动验证震动提示人工手动完成的方式进行过渡,请各位敬请期待新的解决方式
学习强国 每日拿满61分!免root 四人赛双人对战秒答 自动化脚本
Home Page: https://dundunnp.github.io/auto_xuexiqiangguo/
License: MIT License
auto_xuexiqiangguo 是一款自动化学习工具 每天可达满分🚩
本项目旨在解放双手 让大家有更多时间做更有意义的事💪
查看指导手册了解如何安装
⭐Give A Star. 如果对你有帮助的话,希望您可以给一颗星星,推荐给更多的好友
目前无法应对新版的滑动验证,用出现滑动验证震动提示人工手动完成的方式进行过渡,请各位敬请期待新的解决方式
"ui";
/*
runtime.loadJar('./jsoup-1.12.1.jar');
importClass(org.jsoup.Jsoup);
importClass(org.jsoup.nodes.Document);
importClass(org.jsoup.select.Elements);
*/
importClass(android.database.sqlite.SQLiteDatabase);
/**代码原作者
/**修改版
var aTime = 30;//每篇文章学习-30秒 30*12≈360秒=6分钟
var vTime = 60;//每个小视频学习60秒
var rTime = 360;//音视频时长-6分钟
var dyNum = 2;//订阅 2
var commentText = ["支持党,支持国家!", "为实现中华民族伟大复兴而不懈奋斗!", "不忘初心,牢记使命"];//评论内容,可自行修改,大于5个字便计分
var num = random(0, commentText.length - 1) ;//随机数
var aCat = ["推荐","要闻","综合"];
var aCatlog = aCat[num] ;//文章学习类别,随机取"推荐""要闻"、"新**"
var aZX = 1;//文章执行1或2脚本
var date_string = getTodayDateString();//获取当天日期字符串
var vCat = ["第一频道", "学习视频", "联播频道"];
var vCatlog = vCat[num] ; //视频学习类别,随机取 "第一频道"、"学习视频"、"联播频道"
if (num == 0){
var s = "央视网";
}else if (num == 1){
var s = "央视新闻";
}else {
var s = "**广播电视总台";
}
var lCount = 1;//挑战答题轮数
var qCount = random(5, 7);//挑战答题每轮答题数(5~7随机)
var zCount = 2;//争上游答题轮数
var zsyzd =1;//争上游和双人对战是否自动做,1,2 默认自动1
var oldaquestion;//争上游和对战答题循环,定义旧题目对比新题目用20201022
var myScores = {};//分数
//特殊题,特点:题目一样,答案不同
var ZiXingTi = "选择词语的正确词形。"; //字形题
var DuYinTi = "选择正确的读音。";//读音题 20201211
var ErShiSiShi ="下列不属于二十四史的是。";//二十四史
var customize_flag = false;//自定义运行标志
/UI部分***/
ui.layout(
<horizontal>
<text textSize="15sp" marginLeft="15" textColor="black" text="文章频道:" />
<input id="aCatlog" w="55" text="" />
<text textSize="15sp" marginLeft="15" textColor="black" text="日期:" />
<input id="date_string" w="110" text="" />
</horizontal>
<horizontal>
<text textSize="15sp" marginLeft="15" textColor="black" text="文章数量:" />
<input id="aCount" w="30" text="" />
<text textSize="15sp" marginLeft="15" textColor="black" text="时长:" />
<input id="aTime" w="30" text="" />
<text textSize="15sp" marginLeft="15" textColor="black" text="执行:" />
<input id="aZX" w="30" text="" />
</horizontal>
<horizontal>
<text textSize="15sp" marginLeft="15" textColor="black" text="视频频道:" />
<input id="vCatlog" w="80" text="" />
<text textSize="15sp" marginLeft="15" textColor="black" text="关键词:" />
<input id="s" w="150" text="" />
</horizontal>
<horizontal>
<text textSize="15sp" marginLeft="15" textColor="black" text="视频数量:" />
<input id="vCount" w="30" text="" />
<text textSize="15sp" marginLeft="15" textColor="black" text="时长:" />
<input id="vTime" w="30" text="" />
</horizontal>
<horizontal>
<text textSize="15sp" marginLeft="15" textColor="black" text="挑战次数:" />
<input id="lCount" w="30" text="" />
<text textSize="15sp" marginLeft="15" textColor="black" text="答题:" />
<input id="qCount" w="30" text="" />
<text textSize="15sp" marginLeft="15" textColor="black" text="争上游次数:" />
<input id="zCount" w="30" text="" />
</horizontal>
<button w="250" layout_gravity="center" id="about" text="使用说明" />
</vertical>
);
ui.aCatlog.setText(aCatlog.toString());
ui.date_string.setText(date_string.toString());
ui.aCount.setText(aCount.toString());
ui.aTime.setText(aTime.toString());
ui.aZX.setText(aZX.toString());
ui.vCatlog.setText(vCatlog.toString());
ui.s.setText(s.toString());
ui.vCount.setText(vCount.toString());
ui.vTime.setText(vTime.toString());
ui.lCount.setText(lCount.toString());
ui.qCount.setText(qCount.toString());
ui.zCount.setText(zCount.toString());
var thread = null;
ui.all.click(function () {
if (thread != null && thread.isAlive()) {
alert("注意", "脚本正在运行,请结束之前进程");
return;
}
toast("开始积分判断运行");
thread = threads.start(function () {
aCatlog = ui.aCatlog.getText();
vCatlog = ui.vCatlog.getText();
aZX = parseInt(ui.aZX.getText());
lCount = parseInt(ui.lCount.getText());
qCount = parseInt(ui.qCount.getText());
zCount = parseInt(ui.zCount.getText());
main();
});
});
ui.customize.click(function () {
if (thread != null && thread.isAlive()) {
alert("注意", "脚本正在运行,请结束之前进程");
return;
}
toast("开始自定义运行");
thread = threads.start(function () {
aCatlog = ui.aCatlog.getText();
date_string = parseInt(ui.date_string.getText());
vCatlog = ui.vCatlog.getText();
s = ui.s.getText();
aCount = parseInt(ui.aCount.getText());
aTime = parseInt(ui.aTime.getText());
aZX = parseInt(ui.aZX.getText());
vCount = parseInt(ui.vCount.getText());
vTime = parseInt(ui.vTime.getText());
lCount = parseInt(ui.lCount.getText());
qCount = parseInt(ui.qCount.getText());
zCount = parseInt(ui.zCount.getText());
customize_flag = true;
console.log('文章频道:' + aCatlog.toString() + '日期:' + date_string)
console.log('文章数量:' + aCount.toString() + '篇')
console.log('视频频道:' + vCatlog.toString() + '关键词' + s)
console.log('视频数量:' + vCount.toString() + '个')
main();
});
});
ui.cq.click(function () {//挑战答题
auto.waitFor();//等待获取无障碍辅助权限
if (thread != null && thread.isAlive()) {
alert("注意", "脚本正在运行,请结束之前进程");
return;
}
thread = threads.start(function () {
lCount = parseInt(ui.lCount.getText());
qCount = parseInt(ui.qCount.getText());
start_app();
challengeQuestion();
threads.shutDownAll();
console.hide();
engines.stopAll();
exit();
});
});
ui.dq.click(function () {//每日答题
auto.waitFor();//等待获取无障碍辅助权限
if (thread != null && thread.isAlive()) {
alert("注意", "脚本正在运行,请结束之前进程");
return;
}
thread = threads.start(function () {
start_app();
dailyQuestion();
threads.shutDownAll();
console.hide();
engines.stopAll();
exit();
});
});
ui.sr.click(function () {//双人对战
auto.waitFor();//等待获取无障碍辅助权限
if (thread != null && thread.isAlive()) {
alert("注意", "脚本正在运行,请结束之前进程");
return;
}
thread = threads.start(function () {
start_app();
zCount = parseInt(ui.zCount.getText());
SRQuestion();
threads.shutDownAll();
console.hide();
engines.stopAll();
exit();
});
});
ui.zsy.click(function () {//争上游答题
auto.waitFor();//等待获取无障碍辅助权限
if (thread != null && thread.isAlive()) {
alert("注意", "脚本正在运行,请结束之前进程");
return;
}
thread = threads.start(function () {
start_app();
zCount = parseInt(ui.zCount.getText());
zsyQuestion();
threads.shutDownAll();
console.hide();
engines.stopAll();
exit();
});
});
ui.stop.click(function () {
if (thread != null && thread.isAlive()) {
threads.shutDownAll();
toast("停止运行!")
console.hide();
}
else {
toast("没有线程在运行!")
}
});
/ui.update.click(function () {//在线更新题库
if (thread != null && thread.isAlive()) {
alert("注意!", "当前程序正在运行,请结束之前进程");
return;
}
confirm("确认更新在线题库吗?")
.then(c => {
if(c){
console.show();
thread = threads.start(function () {
try {
updateTikunet();
} catch (e) {
alert("在线更新题库出错!");
}
});
threads.shutDownAll();
console.hide();
engines.stopAll();
exit();
}
});
});/
ui.about.click(function () {
alert("使用说明",
"AiQiangGuo Ver 2.19-2020.12.12 \n 〇程序需要 悬浮窗 和 无障碍权限(设置→辅助功能→无障碍→本 APP)\n 〇程序工作原理为模拟点击,基于Auto.js框架+JavaScript脚本执行 \n 〇程序不支持每周答题,专项答题,订阅。正常执行完毕42分(可执行前手动答题,答题完毕学习强国请返回主界面; 也可执行中手动辅助答题,以手动点击为准) \n 〇积分判断执行:读取今日积分确定需执行任务,任务精准,但部分手机可能不支持(积分获取正常推荐使用) \n 〇循序依次执行:预置每日积分所需执行任务数,不判断积分,依次执行所有任务(积分获取返回null或报错使用) \n ◎请确保进入学习强国时位于 主界面,模拟点击从主界面开始 \n ◎因存在文章误点击视频,多次重复点击同一文章视频问题,有概率造成循环执行,请手动补学 \n ◎安卓版本低于安卓7,无法执行收藏评论转发,文章界面模拟滑动 \n ◎测试机型:Redmi 6,Android 9,MiUI 11开发版 \n ★代码基于以下项目实现:Auto.js https://github.com/hyb1996/Auto.js \n LazyStudy https://github.com/lolisaikou/LazyStudy \n AutoLearnChina https://github.com/gzhjic/LearnChinaHelper \n XXQG-Helper https://github.com/ivanwhaf/xxqg-helper \n ●免责声明:本程序只供个人学习Auto.js使用,不得盈利传播,不得用于违法用途,否则造成的一切后果自负!"
)
});
function main() {
if (!judge_tiku_existence()) {//题库不存在则退出
return;
}
auto.waitFor();//等待获取无障碍辅助权限
start_app();//启动app
var start = new Date().getTime();//程序开始时间
if (customize_flag == true) {
//自定义学习,各项目执行顺序可换
localChannel1();//本地频道
zsyQuestion();//争上游答题
SRQuestion();//双人对战
challengeQuestion();//挑战答题
dailyQuestion();//每日答题
if (aZX == 1){
articleStudy1();//学习文章脚本1,包含点赞、分享和评论
}else{
articleStudy2();//学习文章脚本2,包含点赞、分享和评论
}
videoStudy_news();//看视频
}else {
getScores();//获取积分
while ( myScores["双人对战"] < 1 || myScores["争上游答题"] < 2 || myScores['本地频道'] != 1 || myScores['挑战答题'] != 6 || myScores['每日答题'] != 5 || myScores['视听学习'] != 6 || myScores['我要选读文章'] != 12 /|| myScores['分享'] != 1 || myScores['发表观点'] != 1/){
if (myScores['本地频道'] != 1) {
localChannel1();//本地频道
}
if (myScores["争上游答题"] < 2) {
zsyQuestion();//争上游答题
}
if (myScores["双人对战"] < 1) {
SRQuestion();//双人对战
}
if (myScores['挑战答题'] != 6) {
challengeQuestion();//挑战答题
}
if (myScores['每日答题'] != 5) {
dailyQuestion(); //每日答题
}
if (myScores['我要选读文章'] != 12) {
if (aZX == 1){
articleStudy1();//学习文章脚本1,包含点赞、分享和评论
}else{
articleStudy2();//学习文章脚本2,包含点赞、分享和评论
}
}
if (myScores['视听学习'] != 6){
videoStudy_news();//看视频
}
getScores();//再次获取积分,核对文章和视听时长,补学
continue;//break结束当前循环,continue继续执行当前循环
}
if (myScores['分享'] != 1 || myScores['发表观点'] != 1){
aCount = 2;//置文章数2,学习文章2,启动分享收藏评论2
articleStudy(); //收藏+分享 若c运行到此报错请注释本行!
}
if (myScores['视听学习时长'] != 6){
listenToRadio();//听电台广播补视听时长
}
}
var end = new Date().getTime();
console.log("运行结束,共耗时" + (parseInt(end - start)) / 1000 + "秒");
threads.shutDownAll();
console.hide();
engines.stopAll();
exit();
}
/** if (id("home_bottom_tab_button_work").exists()) {
id("home_bottom_tab_button_work").findOne().click();}
while (!id("home_bottom_tab_button_work").exists()) {//20201001 学习按钮文字属性由"学习"改为 "工作",以下所有点击学习按钮加载主页均同步修改
id("home_bottom_tab_button_work").findOne().click();
/
/
/**
/**
/**
@description: 文章学习函数 (阅读文章+文章学习时长)---12分
@param: null
@return: null
/
//文章学习函数之1 点击基于日期s=date_String或 "学习强国"平台
function articleStudy1() {
while (!id("home_bottom_tab_button_work").exists());//等待加载出主页
id("home_bottom_tab_button_work").findOne().click();//点击主页正下方的"学习"按钮
delay(2);
var aCatlog = aCat[num] ;//文章学习类别,随机取"推荐""要闻"、"新**"
var date_string = getTodayDateString();//获取当天日期字符串
var s = date_string;
var listView = className("ListView");//获取文章ListView控件用于翻页
click(aCatlog);
delay(2);
var zt_flag = false;//判断进入专题界面标志
var fail = 0;//点击失败次数
console.log('文章类别:' + aCatlog + '关键词:'+ s)
for (var i = 0, t = 0; i < aCount;) {
if (click(s, t) == true)//如果点击成功则进入文章页面,不成功意味着本页已经到底,要翻页
{
let n = 0;
while (!textContains("欢迎发表你的观点").exists())//如果没有找到评论框则认为没有进入文章界面,一直等待
{
delay(1);
console.warn("正在等待加载文章界面...");
if (n > 3)//等待超过3秒则认为进入了专题界面,退出进下一篇文章
{
console.warn("没找到评论框!该界面非文章界面!");
zt_flag = true;
break;
}
n++;
}
if (textContains("央视网").exists() || textContains("广播").exists() || textContains("**广播电视总台").exists() ||textContains("播放").exists() ||textContains("展开").exists() )//如果存在“央视网、**广播电视总台、播放、展开”则认为进入了视频需退出。关键词测试
{
console.warn("进入视频界面,退出并进下一篇文章!");
t++;
back();
/ while (!id("home_bottom_tab_button_work").exists());
delay(0.5);
click("电台");
delay(1);
click("最近收听");
console.log("因广播被打断,重新收听广播...");
delay(1);
back();*/
while (!id("home_bottom_tab_button_work").exists());
id("home_bottom_tab_button_work").findOne().click();
delay(1);
num = random(0, commentText.length - 1) ; //重取随机数
aCatlog = aCat[num] ;
s = "“学习强国”学习平台";
console.log('文章类别:' + aCatlog + '关键词:'+ s)
click(aCatlog);
delay(1);
continue;
}
if (id("v_play").exists() || id("bg_play").exists())//进入电台页面2020.09.28
{
console.warn("进入电台界面,退出并进下一篇文章!");
t++;
if (id("btn_back").exists()){
id("btn_back").findOnce().click();//返回 2020.09.28需关闭电台收听
}else{
back; }//返回 2020.09.28需关闭电台收听
while (!id("home_bottom_tab_button_work").exists());
id("home_bottom_tab_button_work").findOne().click();
delay(1);
num = random(0, commentText.length - 1) ; //重取随机数
aCatlog = aCat[num] ;
s = "“学习强国”学习平台";
console.log('文章类别:' + aCatlog + '关键词:'+ s)
click(aCatlog);
delay(1);
continue;
}
if (zt_flag == true)//进入专题页标志
{
console.warn("进入了专题界面,退出并进下一篇文章!")
t++;
back();
delay(1);
zt_flag = false;
continue;
}
console.log("正在学习第" + (i + 1) + "篇文章...");
fail = 0;//失败次数清0
article_timing(i, aTime);
if (i < cCount)//收藏分享2篇文章
{
CollectAndShare(i);//收藏+分享 若运行到此报错请注释本行!
Comment(i);//评论
}
back();//返回主界面
while (!id("home_bottom_tab_button_work").exists());//等待加载出主页
delay(1);
i++;
t++;//t为实际点击的文章控件在当前布局中的标号,和i不同,勿改动!
} else {
if (id("v_play").exists() || id("bg_play").exists())//进入电台页面2020.09.28
{
console.warn("进入电台界面,退出并进下一篇文章!");
t++;
if (id("btn_back").exists()){
id("btn_back").findOnce().click();//返回 2020.09.28需关闭电台收听
}else{
back; }
while (!id("home_bottom_tab_button_work").exists());
id("home_bottom_tab_button_work").findOne().click();
delay(1);
num = random(0, commentText.length - 1) ; //重取随机数
aCatlog = aCat[num] ;
s = "“学习强国”学习平台";
console.log('文章类别:' + aCatlog + '关键词:'+ s)
click(aCatlog);
delay(1);
continue;
}
if (i == 0)//如果第一次点击就没点击成功则认为首页无当天文章
{
date_string = getYestardayDateString();
s = date_string;
/*s = "“学习强国”学习平台";*/
num = random(0, commentText.length - 1) ; //重取随机数
aCatlog = aCat[num] ;
click(aCatlog);
console.warn("首页没有找到当天文章,即将学习昨日新闻!"+aCatlog + s);
continue;
}
if (fail > 3)//连续翻几页没有点击成功则认为今天的新闻还没出来,学习昨天的
{
date_string = getYestardayDateString();
/*s = date_string;*/
s = "“学习强国”学习平台";
num = random(0, commentText.length - 1) ; //重取随机数
aCatlog = aCat[num] ;
click(aCatlog);
console.warn("没有找到当天文章,即将学习昨日新闻!"+aCatlog + s);
fail = 0;//失败次数清0
continue;
}
if (!textContains(s).exists())//当前页面当天新闻
{
fail++;//失败次数加一
}
listView.scrollForward();//向下滑动(翻页)
t = 0;
delay(1.5);
}
}
}
//文章学习函数之2 基于播报判断.因基于父子控件判断,点击基于日期s=date_String 感谢chongyadong
function articleStudy2() {
while (!id("home_bottom_tab_button_work").exists());//等待加载出主页
id("home_bottom_tab_button_work").findOne().click();//点击主页正下方的"学习"按钮
delay(2);
var aCatlog = aCat[num] ;//文章学习类别,随机取"推荐""要闻"、"新**"
var date_string = getTodayDateString();//获取当天日期字符串
var s = date_string;
var listView = className("ListView");//获取文章ListView控件用于翻页
click(aCatlog);
delay(2);
var zt_flag = false;//判断进入专题界面标志
var currentNewsTitle = "";
var fail = 0; //点击失败次数
console.log('文章类别:' + aCatlog + '关键词:'+ s)
for (var i = 0, t = 0; i < aCount;) {
var art_obj = text(s).findOnce(t);
//console.info(art_obj);
if ((art_obj != null) && (art_obj.parent().childCount() == 4)) {
t++; //t为实际查找的文章控件在当前布局中的标号,和i不同,勿改动!
if ((art_obj.parent().child(3).text() == "播报") && (art_obj.parent().child(0).text() != currentNewsTitle)) //如果播报存在就进入文章正文
{
currentNewsTitle = art_obj.parent().child(0).text();
log(currentNewsTitle);
art_obj.parent().click();
delay(1);
let n = 0;
while (!textContains("欢迎发表你的观点").exists())//如果没有找到评论框则认为没有进入文章界面,一直等待
{
delay(1);
console.warn("正在等待加载文章界面...");
if (n > 3)//等待超过3秒则认为进入了专题界面,退出进下一篇文章
{
console.warn("没找到评论框!该界面非文章界面!");
zt_flag = true;
break;
}
n++;
}
if (textContains("央视网").exists() || textContains("广播").exists() || textContains("**广播电视总台").exists() ||textContains("播放").exists() ||textContains("展开").exists() )//如果存在“央视网、**广播电视总台、播放、展开”则认为进入了视频需退出。关键词测试
{
console.warn("进入视频界面,退出并进下一篇文章!");
t++;
back();
/while (!id("home_bottom_tab_button_work").exists());
delay(0.5);
click("电台");
delay(1);
click("最近收听");
console.log("因广播被打断,重新收听广播...");
delay(1);
back();/
while (!id("home_bottom_tab_button_work").exists());
id("home_bottom_tab_button_work").findOne().click();
delay(1);
num = random(0, commentText.length - 1) ; //重取随机数
aCatlog = aCat[num] ;
s = date_string;
/s = "“学习强国”学习平台";/
console.log('文章类别:' + aCatlog + '关键词:'+ s)
click(aCatlog);
delay(1);
continue;
}
if (id("v_play").exists() || id("bg_play").exists())//进入电台页面2020.09.28
{
console.warn("进入电台界面,退出并进下一篇文章!");
t++;
if (id("btn_back").exists()){
id("btn_back").findOnce().click();//返回 2020.09.28需关闭电台收听
}else{
back; }//返回 2020.09.28需关闭电台收听
while (!id("home_bottom_tab_button_work").exists());
id("home_bottom_tab_button_work").findOne().click();
delay(1);
num = random(0, commentText.length - 1) ; //重取随机数
aCatlog = aCat[num] ;
s = date_string;
/*s = "“学习强国”学习平台";*/
console.log('文章类别:' + aCatlog + '关键词:'+ s)
click(aCatlog);
delay(1);
continue;
}
if (zt_flag == true)//进入专题页标志
{
console.warn("进入了专题界面,退出并进下一篇文章!")
t++;
back();
delay(1);
zt_flag = false;
continue;
}
console.log("正在学习第" + (i + 1) + "篇文章...");
fail = 0; //失败次数清0
article_timing(i, aTime);
if (i < cCount)//收藏分享2篇文章
{
CollectAndShare(i);//收藏+分享 若c运行到此报错请注释本行!
Comment(i);//评论
}
back(); //返回主界面
while (!id("home_bottom_tab_button_work").exists());//等待加载出主页
delay(1);
i++;
}else{ //判断非目标文章
if (t > 2) {
listView.scrollForward(); //向下滑动(翻页
console.log("----------翻页------------");
t = 0;
delay(1.5);
}
}
}else{
if (fail > 3) //连续翻几页没有点击成功则认为今天的新闻还没出来,学习昨天的
{
date_string = getYestardayDateString();
s = date_string;
/s = "“学习强国”学习平台";/
num = random(0, commentText.length - 1) ; //重取随机数
aCatlog = aCat[num] ;
click(aCatlog);
console.warn("没有找到当天文章,即将学习昨日新闻!"+aCatlog + s);
fail = 0;//失败次数清0
continue;
}
if (!textContains(date_string).exists()) //当前页面当天新闻
{
fail++; //失败次数加一
}
listView.scrollForward(); //向下滑动(翻页
console.log("----------翻页------------");
t = 0;
delay(1.5);
}
}
}
/**
/**
/**
/**
/**
/**
/**
/**
@description: 停止广播
@param: null
@return: null
*/
function stopRadio() {
while (!id("home_bottom_tab_button_work").exists());//等待加载出主页
id("home_bottom_tab_button_work").findOne().click();//点击主页正下方的"学习"按钮
delay(2);
console.log("停止收听广播!");
click("电台");
delay(1);
click("听广播");//202012听新闻广播 改 听广播
delay(2);
while (!(textContains("正在收听").exists() || textContains("最近收听").exists() || textContains("推荐收听").exists())) {
log("等待加载");
delay(2);
}
if (textContains("正在收听").exists()) {
click("正在收听");
console.log("正在停止广播...");
delay(2);
id("v_play").findOnce(0).click();//点击暂停播放按钮
delay(2);
if (id("btn_back").findOne().click() == 0) {//后退
delay(2);
back();
}
}
console.log("广播已停止播放...");
delay(1);
if (!id("home_bottom_tab_button_work").exists()) {
start_app(1);
}
delay(1);
}
/**
@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 collectOrder = textOrder + 2;
var shareOrder = textOrder + 3;
var collectIcon = className("ImageView").filter(function (iv) {
return iv.drawingOrder() == collectOrder;
}).findOnce();
var shareIcon = className("ImageView").filter(function (iv) {
return iv.drawingOrder() == shareOrder;
}).findOnce();
//var collectIcon = classNameContains("ImageView").depth(10).findOnce(0);//右下角收藏按钮
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);
collectIcon.click();//再次点击,取消收藏
console.info("取消收藏!");
delay(1);
}
/**
/**
/**
@description: 学习平台订阅 旧版本
@param: null
@return: null
*/
function sub1() {
while (!id("home_bottom_tab_button_work").exists());//等待加载出主页
id("home_bottom_tab_button_work").findOne().click();//点击主页正下方的"学习"按钮
delay(2);
click("订阅");
delay(2);
click("添加");
delay(2);
click("学习平台", 0); // text("学习平台").findOne().click() == click("学习平台", 0) 解决订阅问题
delay(0.5)
click("强国号", 0)
let sublist = className("ListView").findOnce(0);
var i = 0;
while (i < asub) {
let object = desc("订阅").find();
if (!object.empty()) {
object.forEach(function (currentValue) {
if (currentValue && i < asub) {
let like = currentValue.parent()
if (like.click()) {
console.log("订阅成功");
i++;
delay(2);
} else {
console.error("订阅失败");
}
}
})
} else if (text("你已经看到我的底线了").exists()) {
console.log("尝试订阅学习平台")
back();
delay(1);
click("添加");
delay(1);
click("学习平台", 0);
delay(2);
let sublist = className("ListView").findOnce(1);
while (i < asub) {
let object = desc("订阅").find();
if (!object.empty()) {
object.forEach(function (currentValue) {
if (currentValue && i < asub) {
let like = currentValue.parent()
if (like.click()) {
console.log("订阅成功");
i++;
delay(2);
} else {
console.error("订阅失败");
}
}
})
} else if (text("你已经看到我的底线了").exists()) {
console.log("没有可订阅的强国号了,退出!!!")
back();
delay(2);
return;
} else {
delay(1);
sublist.scrollForward();
}
}
} else {
delay(1);
sublist.scrollForward();
}
}
back();
delay(2);
}
/**
@description: 学习平台订阅 新版本
@param: null
@return: null
*/
/if (ui.sub_quiz.isChecked()) {
if (myScores["订阅"][0] < myScores["订阅"][1]) {
if (getPackageVersion("cn.xuexi.android") <= "2.18.1") {
console.log("----------------------------");
console.info("开始执行订阅任务");
sub();
console.info("订阅任务已完成!");
}
else {
console.info("订阅任务未适配该强国版本,跳过!");
delay(1);
}
}
else {
console.info("订阅任务已完成!");
delay(1);
}
}/
function sub2() {
while (!id("home_bottom_tab_button_work").exists());//等待加载出主页
id("home_bottom_tab_button_work").findOne().click();//点击主页正下方的"学习"按钮
delay(2);
click("订阅");
delay(2);
click("添加");
delay(2);
click("学习平台", 0); // text("学习平台").findOne().click() == click("学习平台", 0) 解决订阅问题
delay(0.5)
click("强国号", 0)
let sublist = className("ListView").findOnce(0);
var i = 0;
while (i < asub) {
let object = desc("订阅").find();
if (!object.empty()) {
object.forEach(function (currentValue) {
if (currentValue && i < asub) {
let like = currentValue.parent()
if (like.click()) {
console.log("订阅成功");
i++;
delay(2);
} else {
console.error("订阅失败");
}
}
})
} else if (text("你已经看到我的底线了").exists()) {
console.log("尝试订阅学习平台")
back();
delay(1);
click("添加");
delay(1);
click("学习平台", 0);
delay(2);
let sublist = className("ListView").findOnce(1);
while (i < asub) {
let object = desc("订阅").find();
if (!object.empty()) {
object.forEach(function (currentValue) {
if (currentValue && i < asub) {
let like = currentValue.parent()
if (like.click()) {
console.log("订阅成功");
i++;
delay(2);
} else {
console.error("订阅失败");
}
}
})
} else if (text("你已经看到我的底线了").exists()) {
console.log("没有可订阅的强国号了,退出!!!")
back();
delay(2);
return;
} else {
delay(1);
sublist.scrollForward();
}
}
} else {
delay(1);
sublist.scrollForward();
}
}
back();
delay(2);
}
/**
/**
/**
/挑战 争上游 双人答题部分*****/
function indexFromChar(str) {
return str.charCodeAt(0) - "A".charCodeAt(0);
}
/**
/**
/**
//循环2 基于上下题干进行判断题目是否已刷新 感谢ivan-cn
function zsyQuestionLoop1() {
//delay(1);
let ClickAnswer;
if (!className("RadioButton").exists() || className("android.view.View").text("继续挑战").exists() || textContains("继续挑战").exists() /|| !textContains("距离答题结束").exists()/){//不存在本局结束标志 继续挑战,则执行
/* console.info("答题结束!");/
return;
} else {
while (!className("RadioButton").exists());//@KB64ba建议使用while判断
if (className("RadioButton").exists() || aquestion.length == 0) {
var aquestion = className("ListView").findOnce().parent().child(0).text();
var question = aquestion.substring(3); //争上游和对战题目前带1.2.3.需去除
//找题目,防出错
while (aquestion == oldaquestion || question == "") {
delay(0.8);
if (!className("RadioButton").exists() || className("android.view.View").text("继续挑战").exists() || textContains("继续挑战").exists()) {
console.info("答题结束!");
return;
}
//找题目
aquestion = className("ListView").findOnce().parent().child(0).text();
question = aquestion.substring(3);
}
//
} else {
console.error("提取题目失败!");
let listArray = className("ListView").findOnce().children();//题目选项列表
let i = random(0, listArray.length - 1);
console.log("随机点击");
listArray[i].child(0).click();//随意点击一个答案
return;
}
var chutiIndex = question.lastIndexOf("出题单位");//@chongyadong添加
if (chutiIndex != -1) {
question = question.substring(0, chutiIndex - 2);
}
question = question.replace(/\s/g, "");
var options = [];//选项列表
if (className("RadioButton").exists()) {
className("ListView").findOne().children().forEach(child => {
var answer_q = child.child(0).child(1).text();
options.push(answer_q);
});
} else {
console.error("答案获取失败!");
return;
}
//
if (aquestion != oldaquestion) {
reg = /.择词语的正确./g // 正则判断是否为字形
if (reg.test(question)) {
//log(options)
var optionStr = options;
for (i in optionStr) {//替换搜索用的数组
optionStr[i] = options[i].substring(3);
}
var optionStr = options.join("");
question = question + optionStr;//Ivan-cn原版代码,会造成搜题失败,不掐头去尾正确率更高 后续:该部分应当配合题库使用
/question = question.substr(1);//开头删除一个字
question = question.substr(0, question.length - 1);//结尾删除一个字,增加搜索的准确率
} else {
question = question.substr(1);//开头删除一个字
question = question.substr(0, question.length - 1);/ //结尾删除一个字,增加搜索的准确率
}
console.log(aquestion.substring(0, 2) + "题目:" + question);
if (question == ZiXingTi.replace(/\s/g, "") || question == DuYinTi.replace(/\s/g, "")|| question == ErShiSiShi.replace(/\s/g, "")) {
question = question + options[0].substring(3); //字形题 读音题 在题目后面添加第一选项,选项带A.去除
}
var answer = getAnswer(question, 'tiku');
if (answer.length == 0) {//tiku表中没有则到tikuNet表中搜索答案
answer = getAnswer(question, 'tikuNet');
}
console.info("答案:" + answer);
if (/^[a-zA-Z]{1}$/.test(answer)) {//如果为ABCD形式
var indexAnsTiku = indexFromChar(answer.toUpperCase());
answer = options[indexAnsTiku];
toastLog("answer from char=" + answer);
}
let hasClicked = false;
let listArray = className("ListView").findOnce().children();//题目选项列表
/ if (answer == "")*/ //如果没找到答案
if (answer.length == 0) {
let i = random(0, listArray.length - 1);
console.error("没有找到答案,随机点击");
listArray[i].child(0).click();//随意点击一个答案
hasClicked = true;
ClickAnswer = listArray[i].child(0).child(1).text();;//记录已点击答案
console.log("随机点击:"+ClickAnswer);
console.log("---------------------------");
}
else//如果找到了答案
{ //该部分问题: 选项带A.B.C.D.,题库返回答案不带,char返回答案带
var answer_a = answer.substring(0, 2);//定义answer_a,获取答案前两个字符对比A.B.C.D.应该不会出现E选项
if (answer_a == "A." || answer_a == "B." || answer_a == "C." || answer_a == "D.") {
listArray.forEach(item => {
var listDescStrb = item.child(0).child(1).text();
if (listDescStrb == answer) {
item.child(0).click();//点击答案
hasClicked = true;
console.log("---------------------------");
}
});
} else {
listArray.forEach(item => {
var listDescStra = item.child(0).child(1).text();
var listDescStrb = listDescStra.substring(3);//选项去除A.B.C.D.再与answer对比
if (listDescStrb == answer) {
item.child(0).click();//点击答案
hasClicked = true;
console.log("---------------------------");
}
});
}
}
if (!hasClicked)//如果没有点击成功
{
console.error("未能成功点击,随机点击");
let i = random(0, listArray.length - 1);
listArray[i].child(0).click();//随意点击一个答案
console.log("---------------------------");
}
}
//旧题目
oldaquestion = aquestion;
delay(1);
}
}
/**
/**
/**
/**
@description: 从数据库中搜索答案
@param: question 问题
@return: answer 答案
*/
function getAnswer(question, table_name) {
var dbName = "tiku.db";//题库文件名
var path = files.path(dbName);
var db = SQLiteDatabase.openOrCreateDatabase(path, null);
sql = "SELECT answer FROM " + table_name + " WHERE question LIKE '" + question + "%'"
var cursor = db.rawQuery(sql, null);
if (cursor.moveToFirst()) {
var answer = cursor.getString(0);
cursor.close();
return answer;
}
else {
console.error("题库中未找到答案");
cursor.close();
return '';
}
}
/**
/每日答题/每周答题部分**/
/**
/**
@description: 每周答题
@param: null
@return: null
*/
function weeklyQuestion() {
let h = device.height;//屏幕高
let w = device.width;//屏幕宽
let x = (w / 3) * 2;//横坐标2分之3处
let h1 = (h / 6) * 5;//纵坐标6分之5处
let h2 = (h / 6);//纵坐标6分之1处
text("我的").click();
if (!textContains("我要答题").exists()) {
delay(1);
click("我要答题");
} else {
(!text("我要答题").exists());
delay(1);
text("我要答题").findOne().parent().click();
}
/while (!textContains("我要答题").exists());
delay(1);
click("我要答题");/
while (!text("每周答题").exists());
delay(1);
text("每周答题").click();
console.log("开始每周答题")
//delay(2);
//text("未作答").click();
//翻页点击每周作答
//let sublist = className("ListView").findOnce(0);//控件错误,用swipe划,7.0以下可能错误
let i = 0;//参考订阅的翻页,只进行一次点击
while (i < 1) {
if (text("未作答").exists()) {
text("未作答").click();
i++;
} else if (text("您已经看到了我的底线").exists()) {
console.log("没有可作答的每周答题了,退出!!!")
back(); delay(1);
back(); delay(1);
back(); delay(1);
return;
} else {
delay(1);
swipe(x, h1, x, h2, 500);//往下翻(纵坐标从5/6处滑到1/6处)
//console.log("滑动查找未作答的每周答题")
}
}
////翻页点击每周作答
let dlNum = 0;//每日答题轮数
while (true) {
delay(1)
while (!(textStartsWith("填空题").exists() || textStartsWith("多选题").exists() || textStartsWith("单选题").exists())) {
console.error("没有找到题目!请检查是否进入答题界面!");
delay(2);
}
dailyQuestionLoop();
if (text("再练一次").exists()) {
console.log("每周答题结束,返回!")
text("返回").click(); delay(2);
back(); delay(1);
back(); delay(1);
while (!textContains("我要答题").exists()) {
back(); delay(1);
}
break;
} else if (text("查看解析").exists()) {
console.log("每周答题结束!")
back(); delay(0.5);
back(); delay(0.5);
break;
} else if (text("再来一组").exists()) {
delay(2);
dlNum++;
if (!text("领取奖励已达今日上限").exists()) {
text("再来一组").click();
console.warn("第" + (dlNum + 1).toString() + "轮答题:");
delay(1);
}
else {
console.log("每周答题结束,返回!")
text("返回").click(); delay(2);
while (!textContains("我要答题").exists()) {
console.log("专项答题结束,返回!")
back(); delay(1);
}
back(); delay(1);
break;
}
}
}
//回退返回主页
while (!id("home_bottom_tab_button_work").exists()) {
back();
delay(0.5);
}
}
/**
@description: 专项答题
@param: null
@return: null
/
function specialQuestion() {
let h = device.height;//屏幕高
let w = device.width;//屏幕宽
let x = (w / 3) * 2;//横坐标2分之3处
let h1 = (h / 6) * 5;//纵坐标6分之5处
let h2 = (h / 6);//纵坐标6分之1处
text("我的").click();
if (!textContains("我要答题").exists()) {
delay(1);
click("我要答题");
} else {
(!text("我要答题").exists());
delay(1);
text("我要答题").findOne().parent().click();
}
/while (!textContains("我要答题").exists());
delay(1);
click("我要答题");/
while (!text("专项答题").exists());
delay(1);
text("专项答题").click();
console.log("开始专项答题")
delay(2);
/
if(text("继续答题").exists())
{
text("继续答题").click();
}else{
text("开始答题").click();
}
*/
//翻页点击专项答题
let i = 0;
while (i < 1) {
if (text("继续答题").exists()) {
text("继续答题").click();
i++;
//console.log("1471")
} else if (text("开始答题").exists()) {
text("开始答题").click();
i++;
//console.log("1474")
} else if (text("您已经看到了我的底线").exists()) {
console.log("没有可作答的专项答题了,退出!!!")
back(); delay(1);
back(); delay(1);
back(); delay(1);
return;
} else if (text("已过期").exists()) {
console.log("存在已过期的专项答题,无法作答,退出!!!")
back();
delay(2);
back(); delay(1);
back(); delay(1);
return;
} else {
delay(1);
swipe(x, h1, x, h2, 500);//往下翻(纵坐标从5/6处滑到1/6处)
delay(1);
console.log("滑动查找未作答的专项答题")
}
}
////翻页点击专项答题
let dlNum = 0;//每日答题轮数
while (true) {
delay(1)
while (!(textStartsWith("填空题").exists() || textStartsWith("多选题").exists() || textStartsWith("单选题").exists())) {
console.error("没有找到题目!请检查是否进入答题界面!");
delay(2);
}
dailyQuestionLoop();
if (text("再练一次").exists()) {
console.log("专项答题结束!")
text("返回").click(); delay(2);
back();
break;
} else if (text("查看解析").exists()) {
console.log("专项答题结束,返回!")
back(); delay(0.5);
back(); delay(0.5);
back(); delay(1);
while (!textContains("我要答题").exists()) {
back(); delay(1);
}
break;
} else if (text("再来一组").exists()) {
delay(2);
dlNum++;
if (!text("领取奖励已达今日上限").exists()) {
text("再来一组").click();
console.warn("第" + (dlNum + 1).toString() + "轮答题:");
delay(1);
}
else {
console.log("专项答题结束,返回!")
delay(2);
while (!textContains("专项答题").exists()) {
console.log("专项答题结束,返回!")
back(); delay(1);
}
back(); delay(1);
break;
}
}
}
//回退返回主页
while (!id("home_bottom_tab_button_work").exists()) {
back();
delay(0.5);
}
}
/**
/**
/**
/**
/**
/**
/**
/**
/**
/更新题库部分**/
/**
/**
/**
华为MATE10 鸿蒙系统
在进入四人赛界面时出现 TypeError: Cannot read property “words block list" from undefined,四人赛不能答题,请问是什么原因?
报错日志如下:
11:41:36.115/E: Wrapped com.stardust.autojs.runtime.exception.ScriptException: java.lang.UnsupportedOperationException: The producer output buffer format 0x2 doesn't match the ImageReader's configured buffer format 0x1. (#30)
Wrapped com.stardust.autojs.runtime.exception.ScriptException: java.lang.UnsupportedOperationException: The producer output buffer format 0x2 doesn't match the ImageReader's configured buffer format 0x1.
at :30:0
at do_periodic_answer (61ab875a04cdd891c8479776.js:575:0)
at 61ab875a04cdd891c8479776.js:622:0
你的软件 如何在autojs 里运行啊
您好,请问现在题库还是不能用吗?2021年12月2日11:35:07答题的时候,还是只选择第一项,华为云OCR是调用成功的
错误:TypeError:Cannot call method"click"of null(61a8ba6216133dca0e9525fajs#713)
在进入双人对战界面时,在配对界面无法随机匹配,然后出现这个错误。
就是在四人答题时,第一轮很正常,准确率也很高,但是结束后到进入第二轮的页面时就卡住了。
作者的这个软件帮助很大,要是能解决这个问题就好了。
22:24:11.678/E: TypeError: Cannot call method "child" of null (61ae160404cdd891c8486e39.js#152)
TypeError: Cannot call method "child" of null
at 61ae160404cdd891c8486e39.js:152:0
用的那个学习强国版本,2.19不试配
十分感谢作者,方便了我们这些每天忙成狗还必须要求学满学分的基层党员。
在官方更新OCR识别后,这个脚本应该是目前唯一能自动比赛的脚本了。
本人手机MI MIX4,5G网络,性能网速应该都不错,强国最新版本,反馈2个问题:
1.答题反应速度较慢。尤其第一题基本在5秒左右作答。如果技术能实现,第一题在1.5-2秒左右,之后0.5-1秒左右是比较合适的。
2.题库准确率较低。目前基本在20%左右。5道题能答对1道就很不错。建议www.syiban.com这个网站的题库比较全,更新也很快,是否有可能抓上面的数据。
再次感谢作者!
最新一版的四人和双人,自动答题全部都选a,准确率基本没有。
首先感谢大佬单独出的四人赛功能,
不过最新版本的主脚本跟四人赛到答题那里就报错了,不能用,提示这个错误。
手机:Nokia x7
版本:安卓9
一次性设置成功,完美运行,答题速度很快,虽然中途错了一道题,但不影响满分!
库题没有吗
16:19:21.056/E: Wrapped java.lang.IllegalArgumentException: Path bounds must not be negative (file:///android_asset/modules/automator.js#17)
Wrapped java.lang.IllegalArgumentException: Path bounds must not be negative
at file:///android_asset/modules/automator.js:17:0
at 61ac73d304cdd891c847d2f9.js:164:0
根据作者的教程,浏览到:文字识别->网络图片识别这里(https://console.huaweicloud.com/ocr/),发现需要付费45元才可以开通使用1年。
我看作者的教程是可以免费使用的。
所以,等免费的ocr了……
最后,感谢作者的付出!
第一道题必须人工选择了后才会自动答题。
设备: 华为mate20 pro
机型 红米 K40
一个小时前用得好好的 心血来草再测试下答题 配置全部正确 权限都给了 机器人在线
求帮忙
TypeError: Cannot read property "words_block_list" from undefined]
四人对战和双人对战如果不手动选择第一题的话脚本不自动做,只有手动选择了第一题脚本才开始做
autojs 开发的使用方便
是卡在哪里了,继续挑战那,还是开始挑战
谢谢回复,是第一个3分四人挑战结束后,后面2分的继续挑战那卡住了。这时还是很高心的,毕竟看到软件在答题时,是真的厉害👍👍,不过因为上面的问题,又检查了一下手机(锤子pro2,一个老手机了😂,不过作为备用机用着还挺好)的设置,不知道是哪个步骤设置错了,今天凌晨的时候,运行了几次,除了第一次拿了24分后今天打开后,强国页面转了几下,就卡在强国主页面不动了。刚才发现版本更新了,更新后还是这样。华为云按照作者的说明设置了,应该是🆗的,否者也进不了第一次的四人挑战答题。也下了一个auto.js pro,(没付费),无障碍也打开了,日志提示
12:21:12.127/V: 开始运行「61ab3b3367479173a3caac71.js」
12:37:11.314/V: 「61ab3b3367479173a3caac71.js」运行结束,用时959.186000秒
好像也没问题。四人战,每日答题,挑战答题双人对战都没有进行,其它的运行完了,但是试听学习进行一小半,只拿了2分,可能是卡在这里了。
这个学习长期以来,牵涉了很多精力。如果能够成功的使用作者的软件的话,将更加感谢作者为大家做的贡献。
RT,非常棒,已经到了可以用的阶段。
怎么搞的我的也是
大大求解 小米9,运行报错 TypeError Cannot read property “word block list” from undefined
请问适配强国的版本
手机版本:安卓7
学习强国版本:2.28.0
运行之后可以进入积分显示页面,返回主页之后就不动了,不知道为啥,可能是手机版本的问题,因为用另外一个安卓11是可以用的,换到安卓7就无法使用
您好!四人和双人只选择第一个。完全不会选其他的?怎么解决啊?
一开始跳出的提示录制屏幕,要点立即开始没办法点,只能点取消,后来百度了半天,把手机自带的小米画报停止运行才可以,
接着再运行就跳出这个提示框,然后就一直没答题了,这是什么错误啊?
错误:Wrapped CvExceptiong org.opencv.cor.CvException:cv::Exception: OpenCV(3.4.3)/build/3_4_pack-android/opencv/modules/core/src/arithm.cpp:1762:error:(-215:Assertion failed)!——src.empty()infunction'void cv::inRange(cv::InputArray,cv::InputArray,cv::InputArray,cv::OutputArray)
四人赢2局后再输两局,双人赢一局后再故意输一局,这样下次匹配的也被会是胜率低的人,我们的胜率就会高点
配置好华为云后运行,没设置屏幕长宽显示Cannnot read propery"words-block-list"form undefinded。
感谢大佬及时更新
今天在测试的时候又出现新的bug
软件已更新到最新,脚本为5.0和2.1
在运行主脚本四人答题结束后自动进入双人答题界面,然后bug并结束运行,bug如下。重新运行主脚本依旧提示如下:
12:33:12.530/:开始运行
T61ab5eef67479173a3cab7c1.js]
12:33:32.849/E: TypeError:
Cannot call method "click" of null
(61ab5eef67479173a3cab7c1.js#744)
TypeError: Cannot call method "click" of null
at 61 ab5eef67479173a3cab7c1.js:744:0
12:33.32.851/V:
T61ab5e167479173a3cab701.js1运行结
束,用时20.321000秒
接着尝试副脚本,四人答题结束后,跳转至双人页面后bug,并自动结束脚本运行,重新运行提示相同bug,内容如下
12:32:36.116/D4.苏州古典园林是**
12:32:40.657/D:5.新**成立后,我国为发
挥各族人民当家作主的积极性,发展平等、区
结、互助的社会主义民族关系,巩固国家的统
,促进全国社会主义建设事业的发展而实行
的基本政治制度是
12:32:55.090/E: TypeError:
Cannot call method "click" of null
(61ab5f2667479173a3cab7d1.js#246)
TypeError: Cannot call method "click" of null
at 61ab5f2667479173a3cab7d1.js:246:0
12:32.55.093/V:
「61ab512667479173a3cab7d1.js」 运行结
束,用时99.1326000秒
请教下各位大佬 按照新的说明填写了长宽等参数,可是依然全部选A,华为云看了下也调用成功了,日志忘记截图了,粗滤看了下题目识别成功了,可能选项没有识别完全,应该排查哪里呢
按照作者设置完答题没反应是为什么?
权限都开了 华为云也都填了 就是没反应 为啥?
{
"result": {
"words_block_count": 33,
"words_block_list": [
{
"words": "01 [65]14 21:24",
"confidence": 0.481,
"location": [
[
350,
7
其他的可以自己做
4人赛不好拿分,想只要这一个功能,
点一次完成一次四人赛,不用做其他的,也不用管四人赛有没有做。
https://github.com/zhuxuedefeng/AiQiangGUO/blob/main/Ai%E5%BC%BA%E5%9B%BD%20UI.js
我以前都是用autojs 编辑 也可以单独用 autojs
你的四人赛 在autojs 运行 提示错误。。。。。
跪求作者
如题。ocr配置过了。
模拟器:可以运行4人赛,2人赛不行,报错6****.js的那个
手机上:4人赛和2人赛点击开始后在第一题界面,没反应,手动点击做题也不会自动答题,日志无输出,疑似没有识别到题目内容
代入如下,可以自动点击允许,我加入不行
// 4.请求截图权限
if (tokenUrl || sendImgRules != "rule_0") {
// 自动点击申请截图权限时的按钮
threads.start(function () {
let timer = setInterval(function () {
if (text("允许").clickable(true).exists()) {
text("允许").clickable(true).findOne().click();
clearInterval(timer);
} else if (desc("允许").clickable(true).exists()) {
desc("允许").clickable(true).findOne().click();
clearInterval(timer);
}
}, 500);
});
if (!requestScreenCapture()) {
setLog("申请截图权限失败");
exitShell();
}
}
RT,速度是明显增快了,选第一项的概率也基本上达到了97%(测试了三十多次),应该就是dundun说的题目没出来就开始OCR的原因。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.