Skip to content

Instantly share code, notes, and snippets.

@pigeon2049
Last active December 19, 2023 05:29
Show Gist options
  • Star 64 You must be signed in to star a gist
  • Fork 27 You must be signed in to fork a gist
  • Save pigeon2049/742b661edd2902e80db4bfca59d01e1a to your computer and use it in GitHub Desktop.
Save pigeon2049/742b661edd2902e80db4bfca59d01e1a to your computer and use it in GitHub Desktop.
const musicNotify = () => {
const m = '/storage/emulated/0/Download/WeiXin/平凡之路.mp3'
media.playMusic(m);
sleep(media.getMusicDuration());
}
const to_mall_cart = () => {
shopping_cart_btn=id('img_shopping_cart').findOne()
if(shopping_cart_btn){
shopping_cart_btn.parent().click() //btn上一级控件可点击
toast('已进入购物车')
}else{
toast('未找到购物车按钮,退出')
exit;
}
}
const pay = () =>{
if(textStartsWith('立即支付').exists()){
textStartsWith('立即支付').findOne().parent().click()
musicNotify()
}
}
const selectTime = (countT,status) =>{
//选择送达时间
textStartsWith('送达时间').findOne().parent().click()
var selectedTime=null;
hourClock_unfilterd=textContains(':00').find()
hourClock=hourClock_unfilterd.filter(item => item.clickable&&item.checkable&&enabled)
if(hourClock.length>0){
selectedTime=hourClock[0]
}else{
quarClock_unfilterd=textContains(':15').find()
quarClock=quarClock_unfilterd.filter(item => item.clickable&&item.checkable&&enabled)
if(quarClock.length>0){
selectedTime=quarClock[0]
}else{
halfClock_unfilterd=textContains(':30').find()
halfClock=halfClock_unfilterd.filter(item => item.clickable&&item.checkable&&enabled)
if(halfClock.length>0){
selectedTime=halfClock[0]
}else{
clock_last_unfilterd=textContains(':45').find()
clock_last=clock_last_unfilterd.filter(item => item.clickable&&item.checkable&&enabled)
if(clock_last.length>0){
selectedTime=clock_last[0]
}
}
}
}
if(selectedTime!=null){
selectedTime.parent().click()
sleep(50)
status=true
pay()
}else{
countT=countT+1;
if(countT>18000){
toast('抢菜选择时间失败')
exit;
}
sleep(100)
selectTime(countT,false)
}
}
const submit_order = (count) => {
toast('抢菜第'+count+'次尝试')
//美团买菜 结算按钮无id
submit_btn=textStartsWith('结算').findOne()
if(!submit_btn){
toast('未找到结算按钮,退出')
exit;
}
submit_btn.parent().click() //结算按钮点击
sleep(1000)
if(textStartsWith('我知道了').exists()){
toast('配送运力已约满')
textStartsWith('我知道了').findOne().parent().click()
}else{
if(textStartsWith('放弃机会').exists()){
toast('跳过加购')
textStartsWith('放弃机会').findOne().parent().click()
}
selectTime(0,false)
}
sleep(100)
count=count+1;
if(count>18000){
toast('抢菜失败')
exit;
}
submit_order(count)
}
const start = () => {
kill_app('美团买菜')
const appName = "美团买菜";
launchApp(appName);
sleep(600);
auto.waitFor()
//跳过开屏广告
btn_skip=id('btn_skip').findOne()
if(btn_skip){
btn_skip.click()
toast('已跳过开屏广告')
}
sleep(600);
//跳过后加载首页会有一段时间再加载出购物车
to_mall_cart()
sleep(3000) //等待购物车加载完成
submit_order(0)
}
function kill_app(packageName) {
var name = getPackageName(packageName);
if (!name) {
if (getAppName(packageName)) {
name = packageName;
} else {
return false;
}
}
app.openAppSetting(name);
text(app.getAppName(name)).waitFor();
let is_sure = textMatches(/(.*强.*|.*停.*|.*结.*|.*行.*)/).findOne();
if (is_sure.enabled()) {
textMatches(/(.*强.*|.*停.*|.*结.*|.*行.*)/).findOne().click();
buttons=textMatches(/(.*强.*|.*停.*|.*结.*|.*行.*|确定|是)/).find()
if(buttons.length>0){
buttons[buttons.length-1].click()
}
log(app.getAppName(name) + "应用已被关闭");
sleep(1000);
back();
} else {
log(app.getAppName(name) + "应用不能被正常关闭或不在后台运行");
back();
}
}
@pigeon2049
Copy link
Author

musicNotify 音乐通知路径需要自己更改
kill_app不同手机不太一样 需要稍微修改

@roseduan
Copy link

roseduan commented Apr 5, 2022

大佬,目前能用吗,支持 ios 么?

@annkoxx
Copy link

annkoxx commented Apr 5, 2022

导入后一直无法运行,显示开始运行就没然后了!!

@DoubleCherish
Copy link

“导入后一直无法运行,显示开始运行就没然后了!!”

如果你懂点代码的话,就知道上面代码只是定义了函数没调用
在最下面一行加上start()即可

@pigeon2049
Copy link
Author

可能会有其它未抢到的情况 v友们自行添加

给个饿不死的思路:
外卖平台药店是正常的,建议下单葡萄糖粉剂500g+维生素矿物质软糖
理论上一天摄入60g葡萄糖就可以维生了

@yunfeng1024
Copy link

@zgl018 大佬,sleep的时间改短一些会有风险吗?比如85行sleep1000ms,sleep的时间会不会太长了?

@justFor95
Copy link

等一个叮咚买菜的

@xiaxzp
Copy link

xiaxzp commented Apr 6, 2022

可能会有其它未抢到的情况 v友们自行添加

给个饿不死的思路: 外卖平台药店是正常的,建议下单葡萄糖粉剂500g+维生素矿物质软糖 理论上一天摄入60g葡萄糖就可以维生了

虽然但是这也太惨了

@yilovezy
Copy link

yilovezy commented Apr 7, 2022

musicNotify 音乐通知路径需要自己更改 kill_app不同手机不太一样 需要稍微修改

进入购物车函数逻辑现在没用了

@blakebill
Copy link

支持一下,今天手抢抢到了几个菌菇,明天试试~

@qwerzl
Copy link

qwerzl commented Apr 7, 2022

请问这个最好要定在什么时候跑?

@Yamazaki-wu
Copy link

没有pro版,只有以前的4.1版本…
今早6点抢菜测试了一下,购物车刷不出来脚本就停在那里,每次重新运行脚本必须要杀后台再进入,购物车刷不出就无法执行。难道换成pro版就可以避免?

@ww-care
Copy link

ww-care commented Apr 7, 2022

狗逼美团,半夜改结算的逻辑,等代码改好,菜也没了

@lumos799
Copy link

lumos799 commented Apr 8, 2022

这个怎么用的,是网页版吗,

@yunfeng1024
Copy link

没有pro版,只有以前的4.1版本… 今早6点抢菜测试了一下,购物车刷不出来脚本就停在那里,每次重新运行脚本必须要杀后台再进入,购物车刷不出就无法执行。难道换成pro版就可以避免?

我是pro,也不能避免,这个是代码的问题吧

@jfdnet
Copy link

jfdnet commented Apr 9, 2022

有没有用成功的?美团是不是有防抢逻辑啊?手抢太难了。

@fengshufs
Copy link

谢谢楼主,抢到三单!

@rogerskey
Copy link

楼主我是刚入门的小白,我用autojs运行后好像进不了购物车呢

@aiyogg
Copy link

aiyogg commented Apr 17, 2022

订单约满跳转了新页面,好像“我知道了”的判断失效,没法关闭返回

@jfdnet
Copy link

jfdnet commented Apr 17, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment