From 3aba3069c484d36c29a53e9cce055625491b1d2a Mon Sep 17 00:00:00 2001 From: Zhang Ling-Kun <51199163+ZzzhangLK@users.noreply.github.com> Date: Sun, 25 Oct 2020 09:09:06 +0800 Subject: [PATCH 01/10] Add files via upload --- api.js | 59 +++++++++++++++++++++++++++ hub.json | 40 +++++++++++++++++++ loading.js | 16 ++++++++ main.js | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++ project.json | 10 +++++ 5 files changed, 236 insertions(+) create mode 100644 api.js create mode 100644 hub.json create mode 100644 loading.js create mode 100644 main.js create mode 100644 project.json diff --git a/api.js b/api.js new file mode 100644 index 0000000..4dba1ca --- /dev/null +++ b/api.js @@ -0,0 +1,59 @@ +//提供api调用 +var api={} +var wrapFuncString=function(fn,data){ + return "("+fn.toString()+")("+JSON.stringify(data)+");" +} +api.wrapFuncString=wrapFuncString +api.getApi=function(data){ + return wrapFuncString(function(data){ + global.obj={} + var obj=global.obj + obj.data=data + obj.apiCode="" + var myapi=require("api.js") + obj.myapi=myapi; + var uniqueId=data.uniqueId// + global.api=(function(){ + return { + getId(){ + return uniqueId + }, + getExtras(){ + return data.extras + } + } + })() + if(uniqueId=="app_ui")//root应用可以设置 + global.api.setApi=function(code){ + obj.apiCode=myapi.wrapFuncString(code).replace(/[\r\n]/g, "") + } + global.tempstorages=global.storages + global.storages=(function(){ + return { + create(str){ + return global.tempstorages.create("appdata_"+uniqueId) + },remove(str){ + return global.tempstorages.remove("appdata_"+uniqueId) + } + } + })() + global.tempengines=global.engines + global.engines=(function(){ + return { + execScript(name, script, config){ + var code=""; + if(script.startsWith('"ui";'))code+='"ui";'; + var extras=null; + if(config&&config.extras)extras=config.extras + code+=myapi.getApi({uniqueId:uniqueId+"_"+name,extras:extras}); + if(obj.apiCode)code+=obj.apiCode; + code+=";global.obj=void 0;"; + code+=script; + return global.tempengines.execScript(name, code, config); + } + } + })() + + },data).replace(/[\r\n]/g, ""); +} +module.exports = api; \ No newline at end of file diff --git a/hub.json b/hub.json new file mode 100644 index 0000000..fe12fcc --- /dev/null +++ b/hub.json @@ -0,0 +1,40 @@ +{ + "code": 200, + "msg": "", + "data": { + "HubRoot":"https://chrrg.github.io/chhub/hub.json", + "ui":["files/ui.js",8], + "list": [{ + "id":1, + "name": "2020双十一喵喵", + "file": "files/1.js", + "version": "1.8.9", + "desc": "一键完成淘宝喵币任务" + },{ + "id":2, + "name": "全自动淘宝撸猫", + "file": "files/2.js", + "version": "1.2.5", + "desc": "猫猫自动点击得喵币" + },{ + "id":3, + "hidden":true, + "name": "测试", + "file": "files/3.js", + "version": "1.0.1", + "desc": "你的一点仓库不是最新版本!" + },{ + "id":4, + "name": "钉钉一键打卡", + "file": "files/4.js", + "version": "1.0.0", + "desc": "钉钉一键打卡" + },{ + "id":5, + "name": "屏幕连点器", + "file": "files/5.js", + "version": "1.0.5", + "desc": "屏幕连点器" + }] + } +} \ No newline at end of file diff --git a/loading.js b/loading.js new file mode 100644 index 0000000..cdfea8f --- /dev/null +++ b/loading.js @@ -0,0 +1,16 @@ +"ui"; +ui.layout( + + + + + + + +) +var a=0 +function re(){ + ui.info.setText("获取最新仓库中"+".".repeat(a)) + if(a++>5)a=0; +} +setInterval(re,50) \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..3067e85 --- /dev/null +++ b/main.js @@ -0,0 +1,111 @@ +// engines.execScriptFile("files/4.js");exit(); +// swipe(500, 500, 505,400, 20) +// pp(packageName(currentPackage()).find(),0,500); +// exit() +// console.log(currentActivity()) +// exit() +runTest(1);exit(); + +// exit(); + +// storages.remove("github.com-chrrg-oneClickHub") +// wrapCodeRun(files.read("files/ui.js"),{ +// uniqueId:"app_ui", +// extras:{ +// hubData:storage.get("hubData") +// } +// }); +// exit() + +var eula = storages.create("github.com-chrrg-oneClickHub-eula"); +if(!eula.get("readme")){ + if(!confirm("欢迎使用","本软件是完全免费且开源的\n任何人可以上传或下载脚本\n请自行辨别脚本安全\n作者不承担任何责任\nhttps://github.com/chrrg/oneClickHub/\n若不同意请点击取消")){toast("必须点击确定才能继续使用!");engines.stopAll();exit();} + alert("启用无障碍服务","请在接下来弹出来的界面中启用本软件的无障碍服务"); + toast("欢迎使用一点仓库!运行需要启用无障碍服务!\n若失效请重启无障碍服务或手机!"); + auto.waitFor(); + eula.put("readme",new Date().getTime()) +}else toast("欢迎使用一点仓库!运行需要启用无障碍服务!\n若失效请重启无障碍服务或手机!"); +function runTest(id){ + var hubData=storages.create("github.com-chrrg-oneClickHub").get("hubData") + if(!hubData)throw "需要先获取仓库数据才能运行测试!"; + wrapCodeRun(files.read("files/ui.js"),{uniqueId:"app_ui",extras:{hubData:hubData,testRun:id}}); +} +function pp(data,offset,size){ + for(var i=offset;i=data.length)return; + console.log(data[i].id()+"|"+data[i].text()+"|"+data[i].desc()+"|"+data[i].className());} +} +var storage = storages.create("github.com-chrrg-oneClickHub"); +var officialHub="https://chrrg.github.io/chhub/hub.json"//官方仓库地址 +function getPath(path){return path.substr(0,path.lastIndexOf('/')+1);}//路径去掉文件名 + +var curHub=storage.get("myHub")//当前使用的仓库 +if(!curHub){curHub=officialHub;storage.put("myHub",curHub)} +function isOfficalHub(){return curHub==officialHub}//当前仓库是否官方 +function ifUnOfficialThenNoticeSwitch(text){if(!isOfficalHub()){if(confirm("温馨提醒",text)){storages.remove("github.com-chrrg-oneClickHub");toast("已切换,请重启一点仓库!");engines.stopAll();exit();}}} +ifUnOfficialThenNoticeSwitch("您正在使用非官方仓库:"+curHub+"\n是否为您重置到官方仓库?") + +var getRemoteCode=function(url,fn){ + var res=http.get(url, {}); + if(!res)throw "err"; + if(res.statusCode != 200){toast("请求失败: " + res.statusCode + " " + res.statusMessage);throw "";}//网络错误 + fn(res); +} +function responseToString(response){return response.body.string()} +function responseToJson(response){return response.body.json()} +function getHubPath(){return curHub} +function getHubData(fn){getRemoteCode(getHubPath(),function(response){var res=responseToJson(response);fn(res)})} +auto.waitFor(); +var loading=engines.execScriptFile("loading.js"); +function getUICode(hubData,fn){ + //获取ui界面的源码 + var ui_version=storage.get("ui_version") + var ui_code=storage.get("ui_code") + if(ui_code&&ui_version==hubData.ui[1]){fn(ui_code);return}//不需要更新 + getRemoteCode(getPath(hubData.HubRoot)+hubData.ui[0],function(response){ + var res=responseToString(response); + storage.put("ui_version",hubData.ui[1]); + storage.put("ui_code",res); + fn(res); + }); +} +function wrapCodeRun(code,data){ + var api=require("api.js"); + var is_ui=""; + if(code.startsWith('"ui";'))is_ui='"ui";' + return engines.execScript(data.uniqueId, is_ui+api.getApi(data)+"global.obj=null;"+code); +} +try{ + getHubData(function(response){ + toast("仓库数据获取成功!") + if(response.code!=200){toast(response.text);throw "";}//规范 不为200就要提醒用户 + if(!response.data)throw ""; + var data=response.data; + if(data.HubRoot!=getHubPath())throw "" + if(!data.list)throw ""; + if(!data.ui)throw ""; + storage.put("hubData",data); + getUICode(data,function(ui_code){ + if(!ui_code)throw ""; + wrapCodeRun(ui_code,{ + uniqueId:"app_ui", + extras:{ + hubData:data + } + }); + loading.getEngine().forceStop() + }) + }) +}catch(e){ + toast("网络异常,仓库数据获取失败!"+e) + var ui_code=storage.get("ui_code") + var data=storage.get("hubData") + if(data.HubRoot!=getHubPath())ui_code="" + if(!ui_code){alert("请连接网络后重新打开!");engines.stopAll();exit()} + wrapCodeRun(ui_code,{ + uniqueId:"app_ui", + extras:{ + hubData:data + } + }); + if(loading.getEngine())loading.getEngine().forceStop() +} \ No newline at end of file diff --git a/project.json b/project.json new file mode 100644 index 0000000..1343ef6 --- /dev/null +++ b/project.json @@ -0,0 +1,10 @@ +{ + "name": "一点仓库", + "main": "main.js", + "ignore": [ + "build" + ], + "packageName": "com.app.ch.onekeyhub", + "versionName": "1.0.3", + "versionCode": 3 +} \ No newline at end of file From 52a60bfea341a1ca62b8809230b3b09b08d2037c Mon Sep 17 00:00:00 2001 From: Zhang Ling-Kun <51199163+ZzzhangLK@users.noreply.github.com> Date: Sun, 25 Oct 2020 09:11:46 +0800 Subject: [PATCH 02/10] Create files --- files | 1 + 1 file changed, 1 insertion(+) create mode 100644 files diff --git a/files b/files new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/files @@ -0,0 +1 @@ + From 2ab74f01670ba36710fd81577025d44a783beb5d Mon Sep 17 00:00:00 2001 From: Zhang Ling-Kun <51199163+ZzzhangLK@users.noreply.github.com> Date: Sun, 25 Oct 2020 09:12:22 +0800 Subject: [PATCH 03/10] Delete files --- files | 1 - 1 file changed, 1 deletion(-) delete mode 100644 files diff --git a/files b/files deleted file mode 100644 index 8b13789..0000000 --- a/files +++ /dev/null @@ -1 +0,0 @@ - From 8bb98140c7f62f0059bcad64ae206a3db1776120 Mon Sep 17 00:00:00 2001 From: Zhang Ling-Kun <51199163+ZzzhangLK@users.noreply.github.com> Date: Sun, 25 Oct 2020 09:14:22 +0800 Subject: [PATCH 04/10] Create test.txt --- js/test.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 js/test.txt diff --git a/js/test.txt b/js/test.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/js/test.txt @@ -0,0 +1 @@ + From e496a8e48ad48006588c99dcb335c1f610c310e0 Mon Sep 17 00:00:00 2001 From: Zhang Ling-Kun <51199163+ZzzhangLK@users.noreply.github.com> Date: Sun, 25 Oct 2020 09:14:44 +0800 Subject: [PATCH 05/10] Add files via upload --- js/main_old.js | 183 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 js/main_old.js diff --git a/js/main_old.js b/js/main_old.js new file mode 100644 index 0000000..d6da4d3 --- /dev/null +++ b/js/main_old.js @@ -0,0 +1,183 @@ +// // alert("123213","123213") +// engines.execScriptFile("test.js"); +// exit() +// // alert("666") +// // exit() + +// var p=console.log; +// // if(confirm("问题检测","喵币数量未变化,是否为您停止任务?")){ +// // alert("已正常停止") +// // exit() +// // } +// // exit() +// function pp(data,offset,size){ +// var p=console.log; +// for(var i=offset;i=data.length)return; +// p(data[i].id()+"|"+data[i].text()+"|"+data[i].desc()+"|"+data[i].className()); +// } +// } +// pp(packageName("com.taobao.taobao").find(),0,500); +// exit() +// var Package="com.taobao.taobao" +// var chfn=function(fn,timeout){ +// if(!timeout)timeout=10000//10s +// var i=0; +// while(1){ +// var result=fn() +// if(result){ +// return result; +// }else{ +// sleep(500); +// if(i++>(timeout/500)){ +// toast("任务步骤超时,请重新运行!"); +// // sleep(1000); +// // throw ""; +// throw ""; +// } +// } +// } +// } +// var getMyCoin=function(){ +// if(text("累计任务奖励").findOnce()){ +// if(text("关闭").findOnce()){ +// text("关闭").findOnce().click() +// chfn(function(){ +// return text("赚喵币").findOnce() +// }) +// var coin=getMyCoin() +// text("赚喵币").findOnce().click() +// chfn(function(){ +// return text("累计任务奖励").findOnce() +// }) +// return coin +// } +// }else if(text("赚喵币").findOnce()){ +// if(textContains("我的喵币,").findOnce()){ +// return parseInt(textContains("我的喵币,").findOnce().text().split("我的喵币,")[1]) +// } +// } +// } + + +// console.log(getMyCoin()) +// console.log(getMyCoin()) +// console.log(getMyCoin()) + +// // text("我的猫,点击撸猫").findOnce().click() +// // pp(packageName("com.taobao.taobao").find(),0,500); +// // console.log() +// exit() + +//仓库 + +var appVersion=3//app版本号 +var storage = storages.create("https://github.com/chrrg/oneClickHub"); +if(!storage.get("readme")){ + alert("欢迎使用","本软件可以一键自动完成各种任务\n运行需要启用无障碍服务!\n若失效请关闭无障碍服务再开启,或者重启手机!\n若闪退请卸载重装!"); + alert("启用无障碍服务","请在接下来弹出来的界面中启用本软件的无障碍服务") + auto.waitFor(); + storage.put("readme",new Date().getTime()) +}else{ + toast("欢迎使用一点仓库!运行需要启用无障碍服务!\n若失效请关闭无障碍服务再开启,或者重启手机!\n若闪退请卸载重装!"); +} +var officialHub="https://chrrg.github.io/chhub/"//官方仓库地址 +var curHub=storage.get("myHub")//当前使用的仓库 +var isOfficalHub=function(){return curHub==officialHub} +if(!curHub){curHub=officialHub;storage.put("myHub",curHub)} +var ifUnOfficialThenNoticeSwitch=function(text){if(!isOfficalHub()){if(confirm("温馨提醒",text)){curHub=officialHub;storage.put("myHub",curHub)}}} +ifUnOfficialThenNoticeSwitch("您正在使用非官方仓库:"+curHub+"\n是否为您切换回官方仓库?") +// if(!isOfficalHub()){ +// curHub=officialHub; +// } +var getRemoteCode=function(url,fn){ + try{ + var r = http.get(url, {},function(res,err){ + try{ + if(err){console.error(err);return;} + if(res.statusCode != 200){toast("请求失败: " + res.statusCode + " " + res.statusMessage);throw "";}//网络错误 + fn(res) + }catch(e){fn(null)} + }); + }catch(e){toast("系统出错!")} +} +//response转各种类型 +var responseToString=function(response){return res.body.string()} +var responseToJson=function(response){return res.body.json()} +//获取仓库的json数据 +var getHubData=function(fn){getRemoteCode(curHub+"hub.json?appVersion="+appVersion,function(response){if(!response)fn(null);var res=responseToJson(response);fn(res)})} +auto.waitFor(); +var loading=engines.execScriptFile("loading.js"); + + +var initUserFace=function(fn){//初始化用户界面 + try{ + getHubData(function(response){ + try{ + if(!response)throw "" + if(response.code!=200){//规范 不为200就要提醒用户 + toast(response.text); + + throw ""; + }else{ + if(response.data.list){ + var list=[]; + for(var i in response.data.list){ + var item=response.data.list[i] + list.push(item.name) + storage.put("item_"+item.name,item); + /* + { + "name": "2020双十一喵喵", + "file": "files/1.js", + "version": 1, + "desc": "修复" + } + */ + if(!storage.get("data_"+item.name)){ + storage.put("data_"+item.name,{ + "installTime":new Date().getTime(),//安装时间 + "useCount":0,//使用次数 + "useLast":0,//上次使用时间 + "currentVersion":"",//当前版本号 + }); + } + } + storage.put("list",list); + } + if(response.data.ui){ + + } + } + }catch(e){ + ifUnOfficialThenNoticeSwitch("仓库:"+curHub+"请求失败\n是否为您切换回官方仓库?"); + } + }) + }catch(e){return false} + // engines.execScriptFile("ui.js") + return true; +} +while(1){ + var result=initUserFace() + if(!result){ + if(curHub!=officialHub){ + if(confirm("温馨提醒","请求仓库"+curHub+"失败\n是否为您切换回官方仓库并重试")){ + curHub=officialHub + + storage.put("myHub",curHub) + } + }else{ + toast("网络异常,请稍后再试!") + exit() + } + }else{ + setTimeout(function(){ + loading.getEngine().forceStop() + },1000) + } +} + +setTimeout(function(){ + +},100) \ No newline at end of file From 4038b58b7d12b135a4f7cfb4269ca9127a14e15f Mon Sep 17 00:00:00 2001 From: Zhang Ling-Kun <51199163+ZzzhangLK@users.noreply.github.com> Date: Sun, 25 Oct 2020 09:15:36 +0800 Subject: [PATCH 06/10] Delete test.txt --- js/test.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 js/test.txt diff --git a/js/test.txt b/js/test.txt deleted file mode 100644 index 8b13789..0000000 --- a/js/test.txt +++ /dev/null @@ -1 +0,0 @@ - From ac06a56ccfa0ff38d1ed432fe0d75eaf9a7670b1 Mon Sep 17 00:00:00 2001 From: Zhang Ling-Kun <51199163+ZzzhangLK@users.noreply.github.com> Date: Sun, 25 Oct 2020 09:15:51 +0800 Subject: [PATCH 07/10] Add files via upload --- ...7\346\234\254\346\226\207\346\241\243.txt" | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 "js/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" diff --git "a/js/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" "b/js/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" new file mode 100644 index 0000000..489419f --- /dev/null +++ "b/js/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" @@ -0,0 +1,76 @@ +var storage = storages.create("https://github.com/chrrg/oneClickHub"); +if(!storage.get("readme")){ + alert("欢迎使用","本软件可以一键自动完成各种任务\n运行需要启用无障碍服务!\n若失效请关闭无障碍服务再开启,或者重启手机!\n若闪退请卸载重装!"); + alert("启用无障碍服务","请在接下来弹出来的界面中启用本软件的无障碍服务") + auto.waitFor(); + storage.put("readme",new Date().getTime()) +}else{ + toast("欢迎使用一点仓库!运行需要启用无障碍服务!\n若失效请关闭无障碍服务再开启,或者重启手机!\n若闪退请卸载重装!"); +} + +var officialHub="https://chrrg.github.io/chhub/"//官方仓库地址 +var curHub=storage.get("myHub")//当前使用的仓库 +if(!curHub){curHub=officialHub;storage.put("myHub",curHub)} +var isOfficalHub=function(){return curHub==officialHub}//当前仓库是否官方 +var ifUnOfficialThenNoticeSwitch=function(text){if(!isOfficalHub()){if(confirm("温馨提醒",text)){curHub=officialHub;storage.put("myHub",curHub)}}} +ifUnOfficialThenNoticeSwitch("您正在使用非官方仓库:"+curHub+"\n是否为您切换回官方仓库?") + +var getRemoteCode=function(url,fn){ + try{ + var r = http.get(url, {},function(res,err){ + try{ + if(err){console.error(err);return;} + if(res.statusCode != 200){toast("请求失败: " + res.statusCode + " " + res.statusMessage);throw "";}//网络错误 + fn(res) + }catch(e){fn(null)} + }); + }catch(e){toast("系统出错!")} +} +var responseToString=function(response){return res.body.string()} +var responseToJson=function(response){return res.body.json()} +var getHubPath=function(){return curHub+"hub.json"} +var getHubData=function(fn){getRemoteCode(getHubPath+"?appVersion="+appVersion,function(response){if(!response)fn(null);var res=responseToJson(response);fn(res)})} +auto.waitFor(); +var loading=engines.execScriptFile("loading.js"); +var getUICode=function(hubData,fn){ + //获取ui界面的源码 + var ui_version=storage.get("ui_version") + var ui_code=storage.get("ui_code") + if(ui_code&&ui_version==hubData.ui[1]){fn(ui_code);return}//不需要更新 + hubData.HubRoot + if(hubData.ui[0]) +} +getHubData(function(response){ +/* +{ + "code": 200, + "msg": "", + "data": { + "HubRoot":"https://chrrg.github.io/chhub/", + "ui":["files/ui.js","1.0.0"], + "list": [{ + "name": "2020双十一喵喵", + "file": "files/1.js", + "version": "1.8.5", + "desc": "一键完成淘宝喵币任务" + },{ + "name": "全自动淘宝撸猫", + "file": "files/2.js", + "version": "1.2.3", + "desc": "猫猫自动点击得喵币" + }] + } +} +*/ + if(!response)throw "" + if(response.code!=200){toast(response.text);throw "";}//规范 不为200就要提醒用户 + if(!response.data)throw ""; + var data=response.data; + if(!data.HubRoot)throw ""; + if(data.HubRoot!=getHubPath())throw "" + if(!data.list)throw ""; + if(!data.ui)throw ""; + storage.put("hubData",data); + +}) + From 22d3c67b92cba64bdc3e2e994ff4028f13eb2553 Mon Sep 17 00:00:00 2001 From: Zhang Ling-Kun <51199163+ZzzhangLK@users.noreply.github.com> Date: Sun, 25 Oct 2020 09:16:42 +0800 Subject: [PATCH 08/10] Create test.txt --- files/test.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 files/test.txt diff --git a/files/test.txt b/files/test.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/files/test.txt @@ -0,0 +1 @@ + From 0929e16ae5c35921edefff6c2095094900a773a1 Mon Sep 17 00:00:00 2001 From: Zhang Ling-Kun <51199163+ZzzhangLK@users.noreply.github.com> Date: Sun, 25 Oct 2020 09:17:16 +0800 Subject: [PATCH 09/10] Add files via upload --- files/1.js | 311 ++++++++++++++++++++++++++++++++++++++++++++++++++++ files/2.js | 138 +++++++++++++++++++++++ files/3.js | 18 +++ files/4.js | 187 +++++++++++++++++++++++++++++++ files/5.js | 21 ++++ files/ui.js | 227 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 902 insertions(+) create mode 100644 files/1.js create mode 100644 files/2.js create mode 100644 files/3.js create mode 100644 files/4.js create mode 100644 files/5.js create mode 100644 files/ui.js diff --git a/files/1.js b/files/1.js new file mode 100644 index 0000000..9d27cc1 --- /dev/null +++ b/files/1.js @@ -0,0 +1,311 @@ +toast("开始任务"); +device.keepScreenOn(3600 * 1000); +device.keepScreenDim(3600 * 1000) +if(typeof api==="undefined")toast("一点仓库有更新了!快更新吧!"); +//try {requiresApi(24);}catch (error){toast('需要在Android 7.0以上版本运行');throw "";} +auto.waitFor(); +var Package="com.taobao.taobao" +var chfn=function(fn,timeout){ + sleep(100) + if(!timeout)timeout=10000//10s + var i=0; + while(1){ + var result=fn() + if(result){ + return result; + }else{ + sleep(500); + if(i++>(timeout/500)){ + toast("任务步骤超时,请重新运行!"); + // sleep(1000); + // throw ""; + throw ""; + } + } + } +} +/** + * 贝塞尔曲线 + * @param {坐标点} ScreenPoint + * @param {偏移量} Offset + */ +function bezier_curves(ScreenPoint, Offset) { + cx = 3.0 * (ScreenPoint[1].x - ScreenPoint[0].x); + bx = 3.0 * (ScreenPoint[2].x - ScreenPoint[1].x) - cx; + ax = ScreenPoint[3].x - ScreenPoint[0].x - cx - bx; + cy = 3.0 * (ScreenPoint[1].y - ScreenPoint[0].y); + by = 3.0 * (ScreenPoint[2].y - ScreenPoint[1].y) - cy; + ay = ScreenPoint[3].y - ScreenPoint[0].y - cy - by; + tSquared =Offset * Offset; + tCubed = tSquared * Offset; + result = { + "x": 0, + "y": 0 + }; + result.x = (ax * tCubed) + (bx * tSquared) + (cx * Offset) + ScreenPoint[0].x; + result.y = (ay * tCubed) + (by * tSquared) + (cy * Offset) + ScreenPoint[0].y; + return result; +}; +/** + * 曲线滑动 + * @param {*} qx + * @param {*} qy + * @param {*} zx + * @param {*} zy + * @param {*} time + */ +function sml_move(qx, qy, zx, zy, time) { + var xxy = [parseInt(time+Math.random()*100)]; + var point = []; + var dx0 = { + "x": qx, + "y": qy + }; + var dx1 = { + "x": random(qx - 100, qx + 100), + "y": random(qy, qy + 50) + }; + var dx2 = { + "x": random(zx - 100, zx + 100), + "y": random(zy, zy + 50), + }; + var dx3 = { + "x": zx, + "y": zy + }; + for (var i = 0; i < 4; i++) { + eval("point.push(dx" + i + ")"); + }; + for (let i = 0; i < 1; i += 0.08) { + let newPoint=bezier_curves(point, i); + xxyy = [parseInt(newPoint.x), parseInt(newPoint.y)] + xxy.push(xxyy); + } + try{ + gesture.apply(null, xxy); + }catch(e){} +}; +var p=console.log; +pp=function(data,offset,size){ + for(var i=offset;i=data.length)return; + p(data[i].id()+"|"+data[i].text()+"|"+data[i].desc()+"|"+data[i].className()); + } +} + +// p(currentPackage()); +// p(currentPackage()); + +var current=currentPackage() +if(!current||current==="com.android.systemui"){ + back(); + sleep(2000) +} + +if(currentPackage()!==Package){ + //需要启动tb + app.launch(Package) + chfn(function(){ + return currentPackage()===Package + }) + if(packageName(currentPackage()).find().length==0){//说明是新开淘宝 + chfn(function(){ + sleep(100) + return packageName(currentPackage()).find().length + }) + sleep(1000)//给充足的时间加载 + chfn(function(){ + return desc("我的淘宝").findOnce() + },25000); + }else{ + if(desc("我的淘宝").findOnce()){//说明在首页 + + }else{//需要返回才能到达首页 + if(currentActivity()=="android.widget.FrameLayout"){} + chfn(function(){ + if(currentPackage()!==Package){ + app.launch(Package) + sleep(200) + } + if(desc("我的淘宝").findOnce()){ + return true; + }else{ + back(); + sleep(200); + } + },25000); + + } + } +} +cur=currentActivity() +// console.log(cur) +// console.log(textMatches(/.*?浏览\d+秒.*?/).findOnce()||descMatches(/.*?浏览\d+秒.*?/).findOnce()) +// pp(packageName(Package).find(),0,500); +// exit() +if(cur!="com.taobao.tao.TBMainActivity"&&cur!="com.taobao.browser.BrowserActivity"){ + back(); + sleep(1000); +} +// if(cur=="com.taobao.browser.exbrowser.BrowserUpperActivity"||cur=="com.taobao.android.shop.activity.ShopRenderActivity"){ +// back(); +// sleep(1000); +// } + +var autoclick=function(arr){ + for(var i=0;i=0;j--){ + chfn(arr[j]).click() + } + return; + } + } +} +var getMyCoin=function(){ + if(text("累计任务奖励").findOnce()){ + if(text("关闭").findOnce()){ + text("关闭").findOnce().click() + chfn(function(){ + return text("赚喵币").findOnce() + }) + var coin + if(textContains("我的喵币,").findOnce()){ + coin=parseInt(textContains("我的喵币,").findOnce().text().split("我的喵币,")[1]) + } + if(text("赚喵币").findOnce()){ + text("赚喵币").findOnce().click() + chfn(function(){ + return text("累计任务奖励").findOnce() + }) + } + return coin + } + }else if(text("赚喵币").findOnce()){ + if(textContains("我的喵币,").findOnce()){ + return parseInt(textContains("我的喵币,").findOnce().text().split("我的喵币,")[1]) + } + } +} +// p(currentActivity()); + +if(cur!="com.taobao.browser.BrowserActivity"||!text("累计任务奖励").findOnce()){ + autoclick([function(){ + return text("赚喵币").findOnce() + },function(){ + return desc("养猫分20亿").findOnce() + },function(){ + return desc("我的淘宝").findOnce() + }]) +} + + +// p(text("浏览双11预售主会场(0/1)").findOnce().parent().parent().parent().children()) +sleep(1000) +var TaskTitle="" +var currentCoin=getMyCoin() +if(!currentCoin)sleep(500) +if(!currentCoin)currentCoin=getMyCoin() + +var oldCoin=currentCoin +toast("现在您有"+oldCoin+"喵币") +while(1){ + sleep(1000) + if(text("赚喵币").findOnce()){ + text("赚喵币").findOnce().click() + chfn(function(){ + return text("累计任务奖励").findOnce() + }) + } + if(text("领取奖励").findOnce()){text("领取奖励").findOnce().click();sleep(5000);} + var coin=getMyCoin() + if(TaskTitle){ + if(coin==oldCoin){ + toast("喵币数量未变化,已为您停止任务") + exit() + } + toast("增加喵币:"+(coin-oldCoin)) + oldCoin=coin + } + if(!currentCoin&&coin)currentCoin=coin + chfn(function(){ + return text("累计任务奖励").findOnce() + }); + try{ + chfn(function(){ + return TaskTitle==""||!text(TaskTitle).findOnce() + }); + }catch(e){} + + sml_move(device.width / 2, device.height*0.5, device.width / 2, device.height*0.1, 500); + sleep(100+100*Math.random()) + sml_move(device.width / 2, device.height*0.5, device.width / 2, device.height*0.8, 500); + var taskList=text("累计任务奖励").findOnce().parent().parent().parent().children() + taskList.splice(0,1) + var isFinish=true; + for(var i=0;icurrentCoin) + toast("任务完成","共增加"+(oldCoin-currentCoin)+"喵币") +else + toast("任务完成","任务已全部完成!") +exit() +// pp(packageName(Package).find(),0,500); + + +// console.log(currentPackage()) +// console.log(currentActivity()) \ No newline at end of file diff --git a/files/2.js b/files/2.js new file mode 100644 index 0000000..dffe23a --- /dev/null +++ b/files/2.js @@ -0,0 +1,138 @@ +toast("开始任务"); +if(typeof api==="undefined")toast("一点仓库有更新了!快更新吧!"); +device.keepScreenOn(3600 * 1000); +device.keepScreenDim(3600 * 1000) +// try {requiresApi(24);}catch (error){toast('需要在Android 7.0以上版本运行');throw "";} +auto.waitFor(); +var Package="com.taobao.taobao" +var chfn=function(fn,timeout){ + if(!timeout)timeout=10000//10s + var i=0; + while(1){ + var result=fn() + if(result){ + return result; + }else{ + sleep(500); + if(i++>(timeout/500)){ + toast("任务步骤超时,请重新运行!"); + // sleep(1000); + // throw ""; + throw ""; + } + } + } +} +var p=console.log; +pp=function(data,offset,size){ + for(var i=offset;i=data.length)return; + p(data[i].id()+"|"+data[i].text()+"|"+data[i].desc()+"|"+data[i].className()); + } +} + +var current=currentPackage() +if(!current||current==="com.android.systemui"){ + back(); + sleep(2000) +} +if(currentPackage()!==Package){ + //需要启动tb + app.launch(Package) + chfn(function(){ + return currentPackage()===Package + }) + if(currentActivity()=="android.widget.FrameLayout"){ + chfn(function(){ + return desc("我的淘宝").findOnce() + },20000); + } +} +cur=currentActivity() +if(cur!="com.taobao.tao.TBMainActivity"&&cur!="com.taobao.browser.BrowserActivity"){ + back(); + sleep(1000); +} + +var autoclick=function(arr){ + for(var i=0;i=0;j--){ + chfn(arr[j]).click() + } + return; + } + } +} +var getMyCoin=function(){ + if(text("累计任务奖励").findOnce()){ + if(text("关闭").findOnce()){ + text("关闭").findOnce().click() + chfn(function(){ + return text("赚喵币").findOnce() + }) + var coin=getMyCoin() + return coin + } + }else if(text("赚喵币").findOnce()){ + if(textContains("我的喵币,").findOnce()){ + return parseInt(textContains("我的喵币,").findOnce().text().split("我的喵币,")[1]) + } + } +} + +if(cur!="com.taobao.browser.BrowserActivity"||!text("累计任务奖励").findOnce()){ + autoclick([function(){ + return desc("养猫分20亿").findOnce() + },function(){ + return desc("我的淘宝").findOnce() + }]) +} +if(text("累计任务奖励").findOnce()){ + if(text("关闭").findOnce()){ + text("关闭").findOnce().click() + chfn(function(){ + return text("赚喵币").findOnce() + }) + } +} +chfn(function(){ + return text("赚喵币").findOnce() +}) +sleep(1000) +var oldCoin=getMyCoin() +var hisCoin=oldCoin +var startTime=new Date().getTime() +toast("现在您有"+oldCoin+"喵币\n现在开始撸猫!") +chfn(function(){ + return text("我的猫,点击撸猫").findOnce() +}) +while(1){ + var obj=text("我的猫,点击撸猫").findOnce() + if(obj){ + obj.click() + sleep(100+Math.random()*100) + coin=getMyCoin() + + if(new Date().getTime()-startTime>20000){ + startTime=new Date().getTime() + if(coin==oldCoin){ + device.vibrate(1000) + if(coin-hisCoin>0){ + toast("任务完成:喵币没变化了,共增加"+(coin-hisCoin)+"喵币!") + }else{ + toast("任务完成:喵币没变化,任务结束!") + } + exit() + } + oldCoin=coin + } + + }else{ + device.vibrate(200) + toast("猫跑丢了,任务停止!") + exit() + } +} \ No newline at end of file diff --git a/files/3.js b/files/3.js new file mode 100644 index 0000000..5ed2454 --- /dev/null +++ b/files/3.js @@ -0,0 +1,18 @@ +// var p=console.log; +// pp=function(data,offset,size){ +// for(var i=offset;i=data.length)return; +// p(data[i].id()+"|"+data[i].text()+"|"+data[i].desc()+"|"+data[i].className()); +// } +// } + + +// function getPackage(){var i=0;while(1){if(i++>100)throw "";var current=currentPackage();if(!current||current==="com.android.systemui"){back();sleep(200)}else return current}} +// var package="com.eg.android.AlipayGphone" +// console.log(getPackage()) + + +console.log(api) + +toast("成功了!") \ No newline at end of file diff --git a/files/4.js b/files/4.js new file mode 100644 index 0000000..ffdbff5 --- /dev/null +++ b/files/4.js @@ -0,0 +1,187 @@ +var Package = 'com.alibaba.android.rimet';var p=console.log;auto.waitFor(); +var company=id("com.alibaba.android.rimet:id/menu_current_company") +// p(currentActivity()) +// pp(packageName(Package).find(),0,500); +// exit() +if(typeof api==="undefined"){ + alert("您的一点仓库过旧,部分功能暂不支持,请先升级!"); + exit(); +} +var storage = storages.create("dingTalk"); +var lastTime=parseInt(storage.get("time")); +if(lastTime){ + if(new Date(lastTime).toString().slice(0, 10)===new Date().toString().slice(0, 10)){ + if(!confirm("记录到"+getDateStr(lastTime)+"已经打过卡了,是否继续尝试呢?")){ + toast("已退出!"); + exit(); + } + } +} +chfn(function(){ + var current=currentPackage() + if(!current||current==="com.android.systemui"){ + back(); + sleep(2000) + return false; + } + return true; +}) + +var launch=function(){ + if(currentPackage()!==Package){ + //需要启动tb + app.launch(Package) + chfn(function(){ + return currentPackage()===Package + }) + // p(currentActivity()) + chfn(function(){ + if(currentActivity()!="android.widget.FrameLayout"){ + back() + sleep(500) + launch() + return false + }else return true + },20000); + // p(currentActivity()) + } +} +function getzf(num){ + if(parseInt(num) < 10)num = '0'+num; + return num; +} +function getDateStr(sj){ + var now = new Date(sj) + var year=now.getFullYear(); + var month=getzf(now.getMonth()+1); + var date=getzf(now.getDate()); + var hour=getzf(now.getHours()); + var minute=getzf(now.getMinutes()); + var second=getzf(now.getSeconds()); + return year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second; +} + + +launch() +if(currentActivity()!="android.widget.FrameLayout"){ + back() +} +chfn(function(){ + if(currentActivity()!="android.widget.FrameLayout"){ + back() + sleep(500) + launch() + return false + }else return true +},20000); +if(currentActivity()=="android.widget.FrameLayout"){ + chfn(function(){ + if(id("com.alibaba.android.rimet:id/btn_check_detail").findOnce()){ + id("com.alibaba.android.rimet:id/btn_check_detail").findOnce().click() + } + return desc("工作台").findOnce() + },20000).click() +} + +// p(currentActivity()) +// pp(packageName(Package).find(),0,500); + +// pp(packageName(Package).find(),0,500); +// exit(); +if(!company.findOnce()&&desc("工作台").findOnce())desc("工作台").findOnce().click() +var companyTitle=chfn(function(){ + return company.findOnce() +},20000).text() +toast(companyTitle); +try{ + chfn(function(){ + if(text("学生健康打卡").findOnce()||desc("学生健康打卡").findOnce())return true; + sleep(1000) + swipe(500, 500, 505,450, 20) + sleep(1000) + return false; + },20000) +}catch(e){toast("未找到【学生健康打卡】,请确认是否存在或重试!");exit()} +sleep(100) +chfn(function(){ + return text("高校每日健康打卡(学生健康码)2.0").findOnce()||desc("高校每日健康打卡(学生健康码)2.0").findOnce() +},20000).click() +chfn(function(){ + return text("今天").findOnce()||desc("今天").findOnce() +},20000).click() + +chfn(function(){ + if(text("修改").findOnce()||desc("修改").findOnce()){ + toast("您今天已经打过卡了!正在为您返回"); + var lastTime=parseInt(storage.get("time")); + if(!lastTime||new Date(lastTime).toString().slice(0, 10)!==new Date().toString().slice(0, 10)){ + storage.put("time",new Date().getTime()) + } + backdesktop(); + exit(); + } + return text("当前位置").findOnce()||desc("当前位置").findOnce() +},20000).click() +sleep(1000) + +chfn(function(){ + return text("获取").findOnce()||desc("获取").findOnce() +},20000).click() +toast("获取中") +chfn(function(){ + return text("地点微调").findOnce()||desc("地点微调").findOnce() +},20000) +chfn(function(){ + return text("提交").findOnce()||desc("提交").findOnce() +},20000).click() + +chfn(function(){ + return textContains("你已成功提交高校每日健康打卡").findOnce()||descContains("你已成功提交高校每日健康打卡").findOnce() +},20000) +storage.put("time",new Date().getTime())//记录打卡时间 +toast("打卡完成,即将返回!"); +backdesktop(); +function backdesktop(){ + chfn(function(){ + if(currentPackage()===Package){ + back() + sleep(200) + return false + }else return true + },20000); + toast("任务完成!") +} +exit() +// desc("工作台").findOnce().click() +function pp(data,offset,size){ + var p=console.log; + for(var i=offset;i=data.length)return; + p(data[i].id()+"|"+data[i].text()+"|"+data[i].desc()+"|"+data[i].className()); + } +} +pp(packageName(Package).find(),0,500); +exit(); + +function chfn(fn,timeout){ + if(!timeout)timeout=10000//10s + var i=0; + while(1){ + var result=fn() + if(result){ + return result; + }else{ + sleep(500); + if(i++>(timeout/500)){ + toast("任务步骤超时,请重新运行!"); + // sleep(1000); + // throw ""; + throw ""; + } + } + } +} + + + diff --git a/files/5.js b/files/5.js new file mode 100644 index 0000000..a29af48 --- /dev/null +++ b/files/5.js @@ -0,0 +1,21 @@ +var width=device.width +var height=device.height +alert("欢迎使用屏幕连点器!","您的设备分辨率为\nx:"+width+",y:"+height+"\n注:屏幕左上角为0点\n横轴x、纵轴y\n如果不确定坐标可以打开开发者选项的指针位置") +var x = rawInput("请输入需要连点的X坐标", width); +if(!x)exit() +var y = rawInput("请输入需要连点的Y坐标", height); +if(!y)exit() +var duration = rawInput("请输入点击间隔(ms)", 1000); + +if(!confirm("最后确认","确认5秒后开始执行吗?\nx:"+x+",y:"+y+" 间隔:"+duration+"\n切换应用或按音量减可停止任务!"))exit() +toast("5秒后自动开始点击("+x+","+y+")") +sleep(5000) +var current=currentPackage() +while(1){ + sleep(duration+Math.random()*2); + press(x,y,1); + if(current!=currentPackage()){ + toast("检测到切换应用,已为您停止执行!") + exit() + } +} \ No newline at end of file diff --git a/files/ui.js b/files/ui.js new file mode 100644 index 0000000..31be874 --- /dev/null +++ b/files/ui.js @@ -0,0 +1,227 @@ +"ui"; +device.keepScreenOn(3600 * 1000); +device.keepScreenDim(3600 * 1000) + +ui.layout( + + + + + + +