邀请码:PG84CG ,推荐给大家比较稳定,就是不FHY!
1、自动滑动
2、自动签到
3、自动点赞
4、自动评论
5、曲线直线滑动区分
6、自动概率设定
7、滑动次数限制
8、时间间隔限制并随机4S
9、增加各类行日志如toastlError等
10、依据概率随机上滑
11、依据概率随机下滑
12、自动签到
13、自动提现
13、关闭广告和避开广告
auto.waitFor();
let appName = "快音"
let see_count = 1000;// rawInput('请输入滑动次数','1000');//手动输入滑动次数默认是1000次。
app.launchApp(appName);
console.show();
curveBrushScreen = false;//是否曲线滑动true取消滑动false直线滑动 v_close
probability=10;//概率自动点赞、评论、关注的概率
timesInterval = 8;//间隔时间
sleep(4000);
autoSign(appName);
clickVideoMenu();
for (var i = 1; i < see_count; i++) {
toastLog(appName + "滑动" + i + "次" + "总计:" + see_count + "次");//系统自带目前我huweinova不显示还不知道为啥
let x1 = random(device.width * 0.2, device.width * 0.3);
let y1 = device.height * 0.8
let x2 = random(device.width * 0.2, device.width * 0.3);
let y2 = device.height * 0.1
let pressTime = random(300, 500);
closeAd();
//福利页保障
if (text("每日福利").exists()) {
clickVideoMenu();
}
//我的页保障
if (text("勋章中心").exists()) {
clickVideoMenu();
}
randomHeart('video_like_parent', probability);//随机点赞
kuaiYinRandomFollow(probability);
randomUpSildeScreen(x1, y2, x1, y1, pressTime, probability);
randomDownSildeScreen(x1, y1, x2, y2, pressTime, timesInterval, probability);
slideScreenDown(x1, y1, x2, y2, pressTime, timesInterval, curveBrushScreen);
}
autoCashOut();
stopApp(appName);
home();
function clickVideoMenu(){
if (className("android.widget.TextView").text("视频").exists()) {
let b = className("android.widget.TextView").text("视频").findOnce().bounds();
click(b.centerX(), b.centerY());
}
}
function closeAd() {
let x1 = random(device.width * 0.2, device.width * 0.3);
let y1 = device.height * 0.8
let x2 = random(device.width * 0.2, device.width * 0.3);
let y2 = device.height * 0.1
let pressTime = random(300, 500);
if (id("v_close").exists()) {
id("v_close").findOnce().click();
}
if (text("查看详情").exists()) {
toastInfo("查看详情在边上滑动防止点击!");
slideScreenDown(device.width * 0.2, y1, device.width * 0.2, y2, pressTime, timesInterval);
}
if (text("立即下载").exists()) {
toastInfo("立即下载在边上滑动防止点击!");
slideScreenDown(device.width * 0.2, y1, device.width * 0.2, y2, pressTime, timesInterval);
}
if (id("close").exists()) {
toastInfo("close在边上滑动防止点击!");
slideScreenDown(device.width * 0.2, y1, device.width * 0.2, y2, pressTime, timesInterval);
}
}
function autoCashOut() {
sleep(1000);
if (text("福利").exists()) {
let b = text("福利").findOnce().bounds();
let clickResult = click(b.centerX(), b.centerY());
if (clickResult) {
sleep(1000);
if (text("提现").exists()) {
text("提现").findOnce().click();
sleep(1000);
clickResult = text("去提现").findOnce().click();
if (clickResult) {
console.show();
toastLog("提现点击按钮成功");
}
}
}
}
}
function autoSign(appName) {
if (text("福利").exists()) {
let b = text("福利").findOnce().bounds();
let clickResult = click(b.centerX(), b.centerY());
if (clickResult) {
sleep(10000);
if (text("视频").exists()) {
let video = className("android.widget.TextView").text("视频").findOnce();
let b = video.bounds();
click(b.centerX(), b.centerY());
}
}
else {
if (className("android.widget.TextView").text("视频").exists()) {
console.info("快音点击,视频");
let video = className("android.widget.TextView").text("视频").findOnce();
let b = video.bounds();
click(b.centerX(), b.centerY());
}
}
}
}
function kuaiYinRandomFollow(probability) {
index = random(1, parseInt(probability));
if (index == 1) {
if (text("关注").exists()) {
text("关注").findOnce().click();
}
}
}
/**
* 贝塞尔曲线
* @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
* @param {*} timesInterval
*/
function slideScreenDown(qx, qy, zx, zy, time, timesInterval, CurveBrushScreen) {
if (CurveBrushScreen) {
curveDown(qx, qy, zx, zy, time, timesInterval); //曲线概率
} else {
lineDown(qx, qy, zx, zy, time, timesInterval); //直线概率
}
}
/**
* 概率0-9 大于3的时候采用曲线概率 小于3的时候直线概率
*/
function randomFunction() {
return Math.floor(Math.random() * 10);
}
function curveDown(qx, qy, zx, zy, time, timesInterval) {
toastInfo("曲线滑动");
var xxy = [time];
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);
}
gesture.apply(null, xxy);
let randomMin = timesInterval * 1000;
let randomMax = (parseInt(timesInterval) + 2) * 1000;
let delayTime = random(randomMin, randomMax);
sleep(delayTime);
}
/**
* 屏幕向下滑动并延迟8至12秒
*/
function lineDown(startX, startY, endX, endY, pressTime, timesInterval) {
toastInfo("屏幕向下滑动");
swipe(startX, startY, endX, endY, pressTime);
let randomMin = timesInterval * 1000;
let randomMax = (parseInt(timesInterval) + 2) * 1000;
let delayTime = random(randomMin, randomMax);
sleep(delayTime);
}
/**
* 按照指定概率随机上滑
* @param {*} startX
* @param {*} startY
* @param {*} endX
* @param {*} endY
* @param {*} pressTime
* @param {*} probability
*/
function randomUpSildeScreen(startX, startY, endX, endY, pressTime, probability) {
let randomIndex = random(1, parseInt(probability));
if (randomIndex == 1) {
swipe(startX, startY, endX, endY, pressTime);
delayTime = random(12000, 15000);
sleep(delayTime);
}
}
/**
* 连续下滑对上一个无兴趣
* 其实得和上滑做个排他,既然无兴趣不要在上滑
*/
function randomDownSildeScreen(startX, startY, endX, endY, pressTime, timesInterval, probability) {
let randomIndex = random(1, parseInt(probability));
if (randomIndex == 1) {
swipe(startX, startY, endX, endY, pressTime);
sleep(2000);
swipe(startX, startY, endX, endY, pressTime);
sleep(timesInterval);
}
}
/**
* 输出Tosat和Info日志
* @param {日志消息} messagge
*/
function toastInfo(message) {
toast(message)
console.info(message)
}
/**
* 输出Tosat和Error日志
* @param {日志消息} messagge
*/
function toastError(message) {
toast(message)
console.error(message)
}
function toastLog(message) {
toast(message)
console.log(message)
}
function toastWarn(message) {
toast(message)
console.warn(message)
}
/**
* 按照指定概率随机上滑
* @param {*} startX
* @param {*} startY
* @param {*} endX
* @param {*} endY
* @param {*} pressTime
* @param {*} probability
*/
function randomUpSildeScreen(startX, startY, endX, endY, pressTime, probability) {
let randomIndex = random(1, parseInt(probability));
if (randomIndex == 1) {
swipe(startX, startY, endX, endY, pressTime);
delayTime = random(12000, 15000);
sleep(delayTime);
}
}
/**
* 连续下滑对上一个无兴趣
* 其实得和上滑做个排他,既然无兴趣不要在上滑
*/
function randomDownSildeScreen(startX, startY, endX, endY, pressTime, timesInterval, probability) {
let randomIndex = random(1, parseInt(probability));
if (randomIndex == 1) {
swipe(startX, startY, endX, endY, pressTime);
sleep(2000);
swipe(startX, startY, endX, endY, pressTime);
sleep(timesInterval);
}
}
/**
* 随机点赞
* @param {点赞ID}} view_id
*/
function randomHeart(view_id, probability) {
index = random(1, parseInt(probability));
if (index == 1) {
var target = id(view_id).findOnce();
if (target == null) {
return;
} else {
target.click();
sleep(1000);
}
}
}
/**
* 随机关注
* @param {控件ID} follow_view_id
* @param {概率} probability
*/
function randomFollow(follow_view_id, probability) {
index = random(1, parseInt(probability));
if (index == 1) {
var target = id(follow_view_id).findOnce();
if (target == null) {
return;
} else {
target.click();
sleep(1000);
}
}
}
/**
* 强制停止app
* @param {应用名称} appName
*/
function stopApp(appName) {
try {
openAppSetting(getPackageName(appName));
sleep(3000);
if (className("android.widget.Button").text("强行停止").exists()) {
className("android.widget.Button").text("强行停止").findOnce().click();
} else {
if (text("强行停止").exists()) {
text("强行停止").findOnce().click();
}
}
sleep(3000);
if (className("android.widget.Button").text("确定").exists()) {
className("android.widget.Button").text("确定").findOnce().click();
toastLog(appName + "已经停止!");
}
else {
if (text("强行停止").exists()) {
text("强行停止").findOnce().click();
toastLog(appName + "已经停止!");
} else {
if (text("结束运行").exists()) {
text("结束运行").findOnce().click();
sleep(500);
if (text("确定").exists()) {
text("确定").findOnce().click();
toastLog("MIUI9 Android7"+appName + "已经停止!");
}
}
}
}
} catch (e) {
toastLog(e);
}
}