美团众包高价单抢单辅助,利用autojs+百度PaddleOCR,附字库源码分享!


我们是用百度PaddleOCR插件实现美团上订单的数字价格识别,然后借用autojs对识别到的价格数字进行判断,符合数字条件比如,PaddleOCR识别到的订单价格为5,那么我们在AUTOJS上的价格为3就会触发抢单,其实这个操作非常方便,比人工快好几倍,几乎是毫秒及反应,我这边本地做了具体的测试,效果可以,然后这边把源码直接分享过来了,感兴趣的可以下载尝试奥。

字库源码:

//比较文字




var 数1="/storage/emulated/0/脚本1.png"
var 数2="/storage/emulated/0/脚本/2.png"
var 数3="/storage/emulated/0/脚本/3.png"
var 数4="/storage/emulated/0/脚本/4.png"
var 数5="/storage/emulated/0/脚本/5.png"
var 数6="/storage/emulated/0/脚本/6.png"
var 数7="/storage/emulated/0/脚本/7.png"
var 数8="/storage/emulated/0/脚本/8.png"
var 数9="/storage/emulated/0/脚本/9.png"
var 数点="/storage/emulated/0/脚本/点.png"

arr = [];
内容=""
总数字 = new Array(数1,数2,数3,数4,数5,数6,数7,数8,数9,数点);
//toastLog("数组"+总数字.length);
//toastLog("数组"+总数字[0]);

function 对比(图片1){
for (let b = 0; b < 总数字.length; b++) {

//images.save(img, "/sdcard/" +a + ".png");
var 本地图=images.read(图片1)

//toastLog(总数字[0])
var 字库图=images.read(总数字[b])

//images.save(字库图, "/sdcard/字库"+b+".png")


var 反馈=images.getSimilarity(本地图, 字库图, {
"type": "PNSR"
})




if(反馈==0){



arr.push(总数字[b]);

}



// toastLog(总数字.length);
}
}
//比较文字




//以上为分割图片


图片 = images.read("/storage/emulated/0/脚本/价格.png");
识别()
图片.recycle()

function 识别() {
let w = 图片.getWidth()
let h = 图片.getHeight()
let color = images.pixel(图片, 0, 0);
let xsh = images.interval(图片, color, 60)
//images.save(xsh,"/sdcard/精灵.jpg");
let bitmap = xsh.getBitmap();
let ysz = util.java.array("int", w * h);
bitmap.getPixels(ysz, 0, w, 0, 0, w, h);
let bjs = ysz[0] //背景色
let jl = [] //记录
let jz = [] //记字
for (let x = 0; x < w; x++) {
i = 0
for (let y = 0; y < h; y++) {
let ys = ysz[y * w + x]
if (ys != bjs) {
log(ys)
jz.push({
x: x,
y: y
})
i++
}
}
if (i == 0 && jz.length > 0) {
jl.push(jz)
jz = []
}
}
let jzb = [] //记坐标
for (let i = 0; i < jl.length; i++) {
let sz = jl[i]
let x = sz[0].x,
y = sz[0].y,
w = sz[0].x,
h = sz[0].y
for (var z = 1; z < sz.length; z++) {
if (sz[z].x < x) {
x = sz[z].x
}
if (sz[z].x > w) {
w = sz[z].x
}
if (sz[z].y < y) {
y = sz[z].y
}
if (sz[z].y > h) {
h = sz[z].y
}
}
jzb.push({
x: x,
y: y,
w: w,
h: h
})
}
for (let i = 0; i < jzb.length; i++) {
img = images.clip(图片, jzb[i].x, jzb[i].y, jzb[i].w-jzb[i].x, jzb[i].h-jzb[i].y)
images.save(img, "/sdcard/" +i + ".png");
对比("/sdcard/" +i + ".png")
img.recycle()


}
xsh.recycle()

//这里为识别文字
for (let i = 0; i < arr.length; i++) {

内容=内容+arr[i]

}

//这里为识别文字

//这里为读取价格


//这里为读取价格

}


//内容=内容.replace('点','.');


var str =内容
var 内容 = str.replace(/storage/g, '');
var 内容 = 内容.replace(/emulated/g, '');
var 内容 = 内容.replace(//0/g, '');
var 内容 = 内容.replace(///g, '');
var 内容 = 内容.replace(/.jpg/g, '');

var 内容 = 内容.replace(/脚本/g, '');
//var result = str.replace(///g, '');
//console.log('result:' + 内容);

// 输出 result:AbcAbcAbc

toastLog(内容)

//以上为分割图片
价格判断+自动滑动源码:

"ui";

ui.layout(
<vertical h="*" w="*">

<text textSize="16sp" textColor="black" text="软件激活码:"/>
<input id="jhm" text="xxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>


<text textSize="16sp" textColor="black" text="最低预设价:(订单价>预设价=抢单)"/>
<input id="jiage" text="5"/>


<text textSize="16sp" textColor="black" text="接单一次后延迟时间(防止多抢):"/>

<input id="huadongyanchi" text="1"/>
<text textSize="16sp" textColor="black" text="滑动抢单速度:(毫秒)"/>

<input id="huadonqd" text="120"/>



<radiogroup orientation="horizontal">
<radio id="单1"text="本地识别"/>
<radio id="单2"text="百度orc"/>

</radiogroup>


<button id="启动" text=">>>只抢10元以上单【默认】" w="*" h="auto"/>
<button id="近距离" text=">>>只抢近距离单(一公里内)" w="*" h="auto"/>
<button id="只抢先抢" text=">>>只抢近距离单(一公里内)" w="*" h="auto"/>

<button id="串号" text="获取设备机器码" w="*" h="auto"/>
<button id="激活" text="点我授权设备" w="*" h="auto"/>




</vertical>
);


ui.激活.click(() => {

var 机器码=device.getAndroidId()
var 最终机器码=机器码+"1995"+"
www.xkrj5.com
"
//importClass(
java.security.Me
ssageDigest);
function md5(string) {
return java.math.BigInteger(1,
java.security.Me
ssageDigest.getInstance("MD5")
.digest(java.lang.String(string).getBytes())).toString(16);
}

var md5=md5(最终机器码)

setClip(md5);//复制当前的授权码
//toastLog(md5);
var 编辑框=ui.jhm.getText();

if(编辑框==md5)
{toastLog("恭喜您!授权成功");

var 返回= files.create("/sdcard/1995/");
// toastLog(返回)

}else{toastLog("授权失败,请填写正确的授权码")}



});






ui.串号.click(() => {

var 串号=device.getAndroidId()

toastLog("当前机器码: "+串号+" 已复制到剪贴板,请发送给作者");
setClip(串号);

});


ui.近距离.click(() => {

//全局点击刷新坐标
x坐标=225
y坐标=1296
初始化=1
//全局点击刷新坐

//全局悬浮窗位置
宽=520
高=450
悬x=600
悬y=1800

//全局悬浮窗位置
//ocr = $plugins.load("com.hraps.ocr")


var 返回= files.create("/sdcard/1995/");
if(返回==false){

console.setSize(宽,高);
console.setPosition(悬x, 悬y);

console.log('感谢骑手选择星辰抢单辅助v1.2免root稳定版!只抢高价单');


console.show()


app.launchApp("VMOS Pro");

threads.start(进入初始化)

暂停=1

arr=[1];
threads.start(距离)

}

});


ui.启动.click(() => {



//全局点击刷新坐标
x坐标=342
y坐标=1976
初始化=1
//全局点击刷新坐

//全局悬浮窗位置
宽=520
高=450
悬x=600
悬y=1800

//全局悬浮窗位置
//ocr = $plugins.load("com.hraps.ocr")


var 返回= files.create("/sdcard/1995/");
if(返回==false){

console.setSize(宽,高);
console.setPosition(悬x, 悬y);

console.log('感谢骑手选择星辰抢单辅助v1.2免root稳定版!只抢高价单');


console.show()


app.launchApp("VMOS Pro");

threads.start(进入初始化)

暂停=1

arr=[1];
threads.start(action)


}else{

toastLog("很抱歉!当前手机设备没有授权")
}







});


//初始化
function 进入初始化(){

//悬浮窗停止脚本

var window = floaty.window(
<frame gravity="center">
<button id="action" text="点我暂停检测"/>
</frame>
);

window.exitOnClose();
window.setPosition(悬x, 悬y);

window.action.click(() => {

//threads.start(zta)
//toastLog("已暂停,如需重新检测订单,请重启检测程序,一定记得开启无障碍服务奥!");
//engines.stopAll();

if (window.action.getText() == '点我暂停检测') {
// engines.execScriptFile(action);
window.action.setText('继续运行');
console.log("已进行暂停脚本运行");

暂停=9999999999999
} else {

if (window.action.getText() == '继续运行') {
// engines.execScriptFile(action);
暂停=0
threads.start(action)

console.log("已重启订单检测服务");
window.action.setText('点我暂停检测');
}



}



});

setInterval(() => {}, 1000);

//悬浮窗停止脚本




requestScreenCapture();




}

//初始化

//价格识别本地

function 价格识别(){

图片 = images.read("/storage/emulated/0/脚本/wx.png");
识别()
图片.recycle()

function 识别() {
let w = 图片.getWidth()
let h = 图片.getHeight()
let color = images.pixel(图片, 0, 0);
let xsh = images.interval(图片, color, 60)
//images.save(xsh,"/sdcard/精灵.jpg");
let bitmap = xsh.getBitmap();
let ysz = util.java.array("int", w * h);
bitmap.getPixels(ysz, 0, w, 0, 0, w, h);
let bjs = ysz[0] //背景色
let jl = [] //记录
let jz = [] //记字
for (let x = 0; x < w; x++) {
i = 0
for (let y = 0; y < h; y++) {
let ys = ysz[y * w + x]
if (ys != bjs) {
log(ys)
jz.push({
x: x,
y: y
})
i++
}
}
if (i == 0 && jz.length > 0) {
jl.push(jz)
jz = []
}
}
let jzb = [] //记坐标
for (let i = 0; i < jl.length; i++) {
let sz = jl[i]
let x = sz[0].x,
y = sz[0].y,
w = sz[0].x,
h = sz[0].y
for (var z = 1; z < sz.length; z++) {
if (sz[z].x < x) {
x = sz[z].x
}
if (sz[z].x > w) {
w = sz[z].x
}
if (sz[z].y < y) {
y = sz[z].y
}
if (sz[z].y > h) {
h = sz[z].y
}
}
jzb.push({
x: x,
y: y,
w: w,
h: h
})
}
for (let i = 0; i < jzb.length; i++) {
let img = images.clip(图片, jzb[i].x, jzb[i].y, jzb[i].w-jzb[i].x, jzb[i].h-jzb[i].y)
images.save(img, "/sdcard/脚本/分割/价格" + i + ".jpg");
img.recycle()
}
// xsh.recycle()
//判断抢单
var arr = files.listDir("/sdcard/脚本/分割");

var 数量=arr.length
toast(数量);
if(数量>=5){
toast("大于");

//进入抢单


//进入抢单
}else{

toast("小于");


//价格不符合


//价格不符合
}
}
}

//价格识别本地




//识别价格

//价格识别









//检测距离

function 距离(){

while(true){

sleep(暂停);

var src = images.read("/storage/emulated/0/脚本/xq.png");
var xq = findImage(captureScreen(), src)
//如果找到滑动图标就循环检测距离


//检测到了
if(xq!=null){
console.log("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz")
var src = images.read("/storage/emulated/0/脚本/huadong.png");
var hd = findImage(captureScreen(), src, {
region: [0,xq.y,device.width,500],
threshold: 0.8
});





if(hd!=null){

var suiji=Math.ceil(Math.random()*80);//生
swipe(hd.x,hd.y,1000,hd.y,parseInt(滑动速度)+parseInt(suiji))
sleep(2000);
}
if(hd==null){
click(357,1881)
}
//检测到了







}else{
console.log("m")
click(357,1881)


}

}
}
//检测距离



//剪辑价格



function action(){



//导入插件
//ocr = $plugins.load("com.hraps.ocr")

sleep(5000);

本地 =ui.单1.isChecked()
百度= ui.单2.isChecked()


var 接单延迟=ui.huadongyanchi.getText();

var 激活码=ui.jhm.getText();

var 最低价格=ui.jiage.getText();

var 延迟时间=ui.shijian.getText();
var 滑动速度=ui.huadonqd.getText();



toastLog("准备初始化数据,启动软件");


sleep(500);


//全局检测义
while(true){

sleep(暂停);






}
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM