(() => {
var __webpack_modules__ = {
81: (module, __unused_webpack_exports, __webpack_require__) => {
__webpack_require__ = {
packageName: "com.ss.android.ugc.aweme",
versions: ["26.0.0", "27.0.0", "28.0.0", "28.1.0", "28.2.0", "28.3.0", "28.4.0", "28.5.0", "28.6.0", "28.7.0", "28.8.0", "28.9.0", "29.0.0"],
nodes: __webpack_require__(761),
commonts: ["又刷到你了", "看看我的作品", "来我主页转转"],
sxhs: ["很高兴认识你", "常来常往"],
zfhs: ["互粉", "回关", "关注", "互赞"],
czyhGjzs: ["多少", "价格", "联系"],
dqGjzs: ["安徽", "浙江", "江苏"]
};
module.exports = __webpack_require__;
},
761: module => {
var nodes = {
all: {
index: {
headimg: {
id: "com.ss.android.ugc.aweme:id/user_avatar"
},
desc: {
id: "com.ss.android.ugc.aweme:id/desc"
},
title: {
id: "com.ss.android.ugc.aweme:id/title"
},
searchInput: {
id: "com.ss.android.ugc.aweme:id/et_search_kw"
}
}
},
"26.0.0": {
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dc7"
},
zan: {
id: "com.ss.android.ugc.aweme:id/er2"
}
},
video: {
like: {
id: "com.ss.android.ugc.aweme:id/er-"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/t5o"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/w8o"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/w8s"
},
username: {
id: "com.ss.android.ugc.aweme:id/nsc"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/w9h"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/po9"
}
},
live: {
msglistbox: {
id: "com.ss.android.ugc.aweme:id/mwq"
},
userlistbox: {
id: "com.ss.android.ugc.aweme:id/xzb"
}
}
},
"27.0.0": {
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dh7"
},
zan: {
id: "com.ss.android.ugc.aweme:id/eyg"
}
},
video: {
like: {
id: "com.ss.android.ugc.aweme:id/eyp"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/vkl"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/yr5"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/yr9"
},
username: {
id: "com.ss.android.ugc.aweme:id/ohq"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/ys7"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/qpd"
}
},
live: {
msglistbox: {
id: "com.ss.android.ugc.aweme:id/njx"
},
userlistbox: {
id: "com.ss.android.ugc.aweme:id/zkc"
}
}
},
"27.3.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/e3z"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dms"
},
zan: {
id: "com.ss.android.ugc.aweme:id/e3p"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v0f"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/y=3"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/y=7"
},
username: {
id: "com.ss.android.ugc.aweme:id/oth"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/y_7"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q1y"
}
},
live: {
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nu1"
},
userlistbox: {
id: "com.ss.android.ugc.aweme:id/z35"
}
}
},
"27.4.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/e3="
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dm2"
},
zan: {
id: "com.ss.android.ugc.aweme:id/e30"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v0u"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/y_h"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/y_l"
},
username: {
id: "com.ss.android.ugc.aweme:id/os-"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/y-k"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q19"
}
},
live: {
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nuw"
},
userlistbox: {
id: "com.ss.android.ugc.aweme:id/z4t"
}
}
},
"27.5.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/e3+"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dnm"
},
zan: {
id: "com.ss.android.ugc.aweme:id/e33"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v1f"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/y-e"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/y-i"
},
username: {
id: "com.ss.android.ugc.aweme:id/osz"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/y+h"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q2n"
}
},
live: {
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nuh"
},
userlistbox: {
id: "com.ss.android.ugc.aweme:id/z5o"
}
}
},
"27.6.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/e5o"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dow"
},
zan: {
id: "com.ss.android.ugc.aweme:id/e5e"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v2+"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/y+-"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zac"
},
username: {
id: "com.ss.android.ugc.aweme:id/ouo"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/za+"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q4b"
}
},
live: {
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nv8"
},
userlistbox: {
id: "com.ss.android.ugc.aweme:id/z7s"
}
}
},
"27.7.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/exn"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/df+"
},
zan: {
id: "com.ss.android.ugc.aweme:id/exd"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v83"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zic"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zig"
},
username: {
id: "com.ss.android.ugc.aweme:id/ov4"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zjf"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q6o"
}
},
live: {
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nsz"
},
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0cc"
}
}
},
"27.8.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/eyq"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dg_"
},
zan: {
id: "com.ss.android.ugc.aweme:id/eyg"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v_e"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zku"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zky"
},
username: {
id: "com.ss.android.ugc.aweme:id/oyz"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zlu"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q72"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0ew"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nwv"
}
}
},
"27.9.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/ezh"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dhs"
},
zan: {
id: "com.ss.android.ugc.aweme:id/ey="
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/waf"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zn6"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zn="
},
username: {
id: "com.ss.android.ugc.aweme:id/o0p"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zo7"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q97"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0h="
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nz9"
}
}
},
"28.0.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/ezh"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dho"
},
zan: {
id: "com.ss.android.ugc.aweme:id/ey="
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/wcy"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zqq"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zqu"
},
username: {
id: "com.ss.android.ugc.aweme:id/o13"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zrr"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q_r"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0kz"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/n19"
}
}
},
"28.1.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/ezy"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/dh0"
},
zan: {
id: "com.ss.android.ugc.aweme:id/ezo"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/wd8"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zrs"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zrw"
},
username: {
id: "com.ss.android.ugc.aweme:id/o2_"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zsu"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q-1"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0lw"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/n3u"
}
}
},
"28.2.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/efs"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/c1a"
},
zan: {
id: "com.ss.android.ugc.aweme:id/efi"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/vsx"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/y6j"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/y6n"
},
username: {
id: "com.ss.android.ugc.aweme:id/oe9"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/y7f"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/qod"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/zzu"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nbk"
}
}
},
"28.3.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/egc"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/c1r"
},
zan: {
id: "com.ss.android.ugc.aweme:id/ef6"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/vvo"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/y9g"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/y9k"
},
username: {
id: "com.ss.android.ugc.aweme:id/og0"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/y=c"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/qp-"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/z2s"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nc4"
}
}
},
"28.4.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/ehq"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/c2="
},
zan: {
id: "com.ss.android.ugc.aweme:id/ehf"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v09"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zbf"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zbj"
},
username: {
id: "com.ss.android.ugc.aweme:id/old"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zcb"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/qu-"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/z9i"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/ng7"
}
}
},
"28.5.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/eio"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/c31"
},
zan: {
id: "com.ss.android.ugc.aweme:id/eid"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v3+"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zex"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/ze1"
},
username: {
id: "com.ss.android.ugc.aweme:id/on1"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zft"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/qx3"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/z-5"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nje"
}
}
},
"28.6.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/ei-"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/c4g"
},
zan: {
id: "com.ss.android.ugc.aweme:id/ei1"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v7c"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zh="
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zia"
},
username: {
id: "com.ss.android.ugc.aweme:id/op1"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zi7"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/qz9"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0ck"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nk-"
}
}
},
"28.7.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/ejz"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/c41"
},
zan: {
id: "com.ss.android.ugc.aweme:id/ejo"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v97"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zk="
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zla"
},
username: {
id: "com.ss.android.ugc.aweme:id/ory"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zl6"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q2d"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0fr"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nm6"
}
}
},
"28.8.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/ekj"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/c5g"
},
zan: {
id: "com.ss.android.ugc.aweme:id/ej-"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/v+_"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zph"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zpl"
},
username: {
id: "com.ss.android.ugc.aweme:id/ot-"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zqd"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q47"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0jz"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nor"
}
}
},
"28.9.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/el2"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/c6w"
},
zan: {
id: "com.ss.android.ugc.aweme:id/elr"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/wej"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zt8"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zt-"
},
username: {
id: "com.ss.android.ugc.aweme:id/owx"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zu4"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q7="
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0ol"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nrb"
}
}
},
"29.0.0": {
video: {
like: {
id: "com.ss.android.ugc.aweme:id/el5"
}
},
comment: {
button: {
id: "com.ss.android.ugc.aweme:id/c6v"
},
zan: {
id: "com.ss.android.ugc.aweme:id/elu"
}
},
user: {
homeMark: {
id: "com.ss.android.ugc.aweme:id/wgx"
},
gznum: {
id: "com.ss.android.ugc.aweme:id/zxf"
},
fansnum: {
id: "com.ss.android.ugc.aweme:id/zxj"
},
username: {
id: "com.ss.android.ugc.aweme:id/ox2"
},
lanv: {
id: "com.ss.android.ugc.aweme:id/zyb"
},
followBtn: {
id: "com.ss.android.ugc.aweme:id/q9u"
}
},
live: {
userlistbox: {
id: "com.ss.android.ugc.aweme:id/0r0"
},
msglistbox: {
id: "com.ss.android.ugc.aweme:id/nrq"
}
}
}
};
module.exports = nodes;
},
954: (module, __unused_webpack_exports, __webpack_require__) => {
var conf = __webpack_require__(81);
var utility = __webpack_require__(871);
var engine = __webpack_require__(557);
var douyin = {
version: "",
nodes: {},
init() {
var info = utility.packageInfo(conf.packageName);
if (utility.isEmpty(info)) {
alert("请安装支持的抖音版本!");
return true;
} else if (conf.versions.includes(info.versionName)) {
this.version = info.versionName;
this.nodes = conf.nodes[info.versionName] || {};
return true;
} else {
alert("不支持 抖音(" + info.versionName + ")请安装支持的抖音版本!");
return false;
}
},
execClose() {
for (utility.inputHide();;) {
var closeBtn = desc("关闭").visibleToUser().findOnce();
if (!closeBtn) {
break;
}
closeBtn.click();
sleep(1000);
}
},
execCancel() {
while (true) {
var closeBtn = id("cancel_btn").visibleToUser().findOnce();
if (!closeBtn) {
break;
}
closeBtn.click();
sleep(1000);
}
},
execBackOnce() {
var backBtn = desc("返回").visibleToUser().findOnce();
return backBtn !== null && (backBtn.click(), sleep(500), true);
},
execBack() {
while (this.execBackOnce());
},
execLike() {
var wdz = className("android.widget.LinearLayout").descStartsWith("未点赞").descEndsWith("按钮").visibleToUser().findOnce();
return !!wdz && (utility.toast("执行点赞"), wdz.click(), sleep(1000), true);
},
execTxdz() {
var txdz;
if (desc("用户头像").visibleToUser().findOnce().click()) {
sleep(500);
txdz = className("android.widget.RelativeLayout").visibleToUser().findOnce();
sleep(500);
txdz.click();
engine.sleepMs(1000, 2000);
back();
sleep(1000);
}
},
popupAndClose() {
threads.start(function () {
while (true) {
var a;
sleep(200);
if (text("授权提示").exists()) {
text("同意授权").click();
}
sleep(200);
if (text("休息一下吧").exists()) {
text("取消").click();
}
sleep(200);
if (text("很晚了,睡个好觉").exists() || text("早点睡觉吧").exists()) {
text("取消").click();
}
sleep(200);
if (text("朋友推荐").exists() && (a = desc("关闭").findOnce())) {
a.click();
}
sleep(200);
if (text("发现通讯录好友").exists()) {
text("取消").click();
}
sleep(200);
if (text("个人信息保护指引").exists()) {
text("好的").click();
}
sleep(200);
if (text("去商店评分").exists()) {
text("取消").click();
}
sleep(200);
if (text("开启青少年模式").exists()) {
text("我知道了").click();
}
sleep(200);
if (text("检测到更新").exists()) {
text("以后再说").click();
}
sleep(200);
if (text("跳过广告").exists()) {
text("跳过广告").click();
}
sleep(200);
if (text("下次").exists()) {
text("下次").click();
}
sleep(1000);
}
});
},
getNode(path) {
var tp;
var path = path.split(".");
let node = this.nodes;
for (tp of path) {
if ((node = node[tp] || null) === null) {
break;
}
}
if (!node) {
node = conf.nodes.all;
for (let tp of path) {
if ((node = node[tp] || null) === null) {
break;
}
}
}
return node;
},
isRecommend() {
return descContains("推荐").descEndsWith("按钮").descContains("已选中").visibleToUser().findOnce() !== null || descContains("精选").descEndsWith("按钮").descContains("已选中").visibleToUser().findOnce() !== null;
},
IsVideo() {
var node = douyin.getNode("video.like");
return node !== null && id(node.id).visibleToUser().findOnce() !== null || className("android.widget.LinearLayout").descContains("点赞").descEndsWith("按钮").visibleToUser().findOnce() !== null;
},
IsVideoDelay(ms) {
return className("android.widget.LinearLayout").descContains("点赞").descEndsWith("按钮").visibleToUser().findOne(ms) !== null;
},
skipVideo() {
return !this.IsVideo() && (utility.toast("跳过非视频或图集作品!"), sleep(500), engine.slide(), true);
},
IsFollow() {
return className("android.widget.Button").desc("关注").visibleToUser().findOnce() !== null;
},
execFollow() {
var con = className("android.widget.Button").desc("关注").visibleToUser().findOnce();
return !!con && (utility.toast("执行关注"), con.click(), true);
},
sikpFollow() {
return !this.IsFollow() && (utility.toast("跳过已关注用户"), sleep(500), engine.slide(), true);
},
IsLike() {
return className("android.widget.LinearLayout").descStartsWith("已点赞").descEndsWith("按钮").visibleToUser().findOnce() !== null;
},
sikpLike() {
return !!this.IsLike() && (utility.toast("跳过已点赞视频"), sleep(500), engine.slide(), true);
},
getLikeNum() {
let num = 0;
try {
var desc = className("android.widget.LinearLayout").descContains("点赞").descEndsWith("按钮").visibleToUser().findOnce().desc();
num = parseFloat(desc.match(/[0-9]+(\.[0-9]{0,2})?/g)[0]);
if (desc.indexOf("w") >= 0 || desc.indexOf("万") >= 0) {
num *= 10000;
}
} catch (e) {
num = 0;
}
return num;
},
IsAd() {
return textContains("广告").visibleToUser().findOnce() !== null;
},
sikpAp() {
return !!this.IsAd() && (utility.toast("跳过忽略广告"), sleep(500), engine.slide(), true);
},
IsCommerce() {
try {
if (textEndsWith("限时秒杀").visibleToUser().findOnce() !== null) {
return true;
}
if (textEndsWith("优惠团购").visibleToUser().findOnce() !== null) {
return true;
}
} catch (e) {}
return false;
},
sikpCommerce() {
return !!this.IsCommerce() && (utility.toast("跳过商业视频!"), sleep(500), engine.slide(), true);
},
watchVideo(startTime, watchTime) {
startTime = engine.getUnix() - startTime;
if ((watchTime -= startTime = startTime > 60 ? 60 : startTime) > 0) {
engine.sleep(watchTime);
utility.toast("继续观看视频" + watchTime + "秒");
} else {
utility.toast("已观看视频" + startTime + "秒");
}
sleep(500);
},
canComment() {
let num = 0;
try {
var desc = className("android.widget.LinearLayout").descContains("评论").descEndsWith("按钮").visibleToUser().findOnce().desc();
num = parseFloat(desc.match(/[0-9]+(\.[0-9]{0,2})?/g)[0]);
} catch (e) {
num = 0;
}
return num > 0;
},
sendComment(hs, isComment, isLike, pltp) {
try {
isComment = !!isComment || isComment === undefined;
var plBtn = className("android.widget.LinearLayout").descStartsWith("评论").descEndsWith("按钮").visibleToUser().findOnce();
if (plBtn && plBtn.click()) {
let editText = className("android.widget.EditText").visibleToUser().findOne(3000);
if (editText === null) {
sleep(1000);
editText = className("android.widget.EditText").visibleToUser().findOne(2000);
}
if (editText === null) {
utility.toast("没有识别到评论框");
sleep(500);
} else {
if (isLike) {
utility.toast("执行评论点赞");
sleep(1000);
(commentZanBtns = descStartsWith("赞").descEndsWith("未选中").visibleToUser().find()).forEach(el => {
(el.clickable() ? el : el.parent()).click();
engine.sleepMs(500, 1000);
});
}
var hsLen = hs.length;
if (!isComment || hsLen < 1) {
utility.toast("不执行评论");
sleep(500);
} else {
utility.toast("准备发表评论");
if (editText.click()) {
sleep(1000);
setText(hs[random(0, hsLen - 1)]);
engine.sleepMs(1000, 3000);
if (pltp && desc("插入图片").visibleToUser().findOne(3000) !== null) {
if (!desc("插入图片").visibleToUser().findOne().click()) {
utility.toast("没有成功点击到发布图片按钮");
}
sleep(2000);
let listBox = id("com.ss.android.ugc.aweme:id/content_container").visibleToUser().findOne(2000);
if ((listBox = listBox.find(id("com.ss.android.ugc.aweme:id/root_view"))).length == 0) {
alert("没有图片!", "手机相册里请先准备好图片!");
return;
}
if (!listBox[random(0, listBox.length - 1)].click()) {
utility.toast("图片点击失败!");
back();
}
engine.sleepMs(1000, 2000);
}
let sendBtn = className("android.widget.ImageView").visibleToUser().desc("发送").findOne(5000);
if ((sendBtn = (sendBtn = sendBtn || className("android.widget.TextView").visibleToUser().text("发送").findOne(5000)) || text("发送").findOne(5000)) === null) {
utility.toast("没有获取到发送按钮");
sleep(1000);
} else {
if (sendBtn.clickable()) {
if (!sendBtn.click()) {
utility.toast("没有成功点击发送按钮");
sleep(1000);
this.execClose();
return;
}
} else if (!sendBtn.parent().click()) {
utility.toast("没有成功点击parent发送按钮");
sleep(1000);
this.execClose();
return;
}
utility.toast("评论完成");
if (text("我也发一张").visibleToUser().findOne(5000) !== null) {
this.execBack();
}
engine.sleepMs(2000, 5000);
}
} else {
utility.toast("没有成功点击评论框");
sleep(500);
}
}
}
this.execClose();
}
} catch (e) {
console.log(e);
utility.toast("评论操作失败");
sleep(500);
this.execClose();
}
},
isHome() {
return id(this.getNode("user.homeMark").id).visibleToUser().findOne(10000) !== null;
},
previewHome() {
var head = id(this.getNode("index.headimg").id).visibleToUser().findOnce();
if (head !== null && head.click()) {
utility.toast("访问用户首页");
if (this.isHome()) {
engine.sleep(2, 5);
if (random(1, 3) == 1) {
engine.slide();
engine.sleep(2, 5);
}
} else {
console.log("打开用户首页失败");
}
this.execBackOnce();
}
},
previewHomeTc() {
let yhxb = 0;
var head = id(this.getNode("index.headimg").id).visibleToUser().findOnce();
if (head !== null && head.click()) {
utility.toast("访问用户首页");
if (this.isHome()) {
engine.sleepMs(2000, 3000);
if (descStartsWith("男").visibleToUser().findOnce() !== null) {
yhxb = 1;
}
if (descStartsWith("女").visibleToUser().findOnce() !== null) {
yhxb = 2;
}
this.execBackOnce();
return yhxb;
}
console.log("打开用户首页失败");
this.execBackOnce();
}
},
getVideoDesc() {
var vedioDesc = id(douyin.getNode("index.desc").id).visibleToUser().findOnce();
if (vedioDesc === null) {
return "";
} else {
return vedioDesc.text();
}
},
getVideoTitle() {
var vedioTitle = id(douyin.getNode("index.title").id).visibleToUser().findOnce();
if (vedioTitle === null) {
return "";
} else {
return vedioTitle.text();
}
},
getVideoMark() {
return this.getVideoDesc() + this.getVideoTitle();
}
};
module.exports = douyin;
},
557: (module, __unused_webpack_exports, __webpack_require__) => {
if (typeof __webpack_require__.g.ENV_CONF == "undefined") {
__webpack_require__.g.ENV_CONF = {};
}
module.exports = {
deviceWidth: ENV_CONF.screenWidth || device.width,
deviceHeight: ENV_CONF.screenHeight || device.height,
exit() {
engines.stopAll();
exit();
},
swipeEx(qx, qy, zx, zy, time) {
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) {
xxyy = [parseInt(this.bezier_curves(point, i).x), parseInt(this.bezier_curves(point, i).y)];
xxy.push(xxyy);
}
gesture.apply(null, xxy);
},
bezier_curves(cp, t) {
cx = (cp[1].x - cp[0].x) * 3;
bx = (cp[2].x - cp[1].x) * 3 - cx;
ax = cp[3].x - cp[0].x - cx - bx;
cy = (cp[1].y - cp[0].y) * 3;
by = (cp[2].y - cp[1].y) * 3 - cy;
ay = cp[3].y - cp[0].y - cy - by;
tSquared = t * t;
tCubed = tSquared * t;
(result = {
x: 0,
y: 0
}).x = ax * tCubed + bx * tSquared + cx * t + cp[0].x;
result.y = ay * tCubed + by * tSquared + cy * t + cp[0].y;
return result;
},
shortSlide() {
this.swipeEx(this.deviceWidth * 0.5, this.deviceHeight * 0.8, this.deviceWidth * 0.5, this.deviceHeight * 0.8 - 500, 300);
},
middleSlide() {
this.swipeEx(this.deviceWidth * 0.5, this.deviceHeight * 0.8, this.deviceWidth * 0.5, this.deviceHeight * 0.5, 300);
},
deSlide() {
this.swipeEx(this.deviceWidth * 0.5, this.deviceHeight * 0.3, this.deviceWidth * 0.5, this.deviceHeight, 300);
},
bshortSlide() {
this.swipeEx(this.deviceWidth * 0.5, this.deviceHeight * 0.8, this.deviceWidth * 0.5, this.deviceHeight * 0.8 - 500, 300);
},
slide() {
this.swipeEx(this.deviceWidth * 0.8, this.deviceHeight * 0.7, this.deviceWidth * 0.8, 0, random(300, 500));
},
fanslide() {
this.swipeEx(this.deviceWidth * 0.9, this.deviceHeight * 0.5, this.deviceWidth * 0.9, this.deviceHeight * 0.01, 500);
},
regionClick(region) {
click(random(region[0], region[0] + region[2]), random(region[1], region[1] + region[3]));
},
boundsClick(bounds) {
var x = bounds.width() * 0.2;
var y = bounds.height() * 0.2;
bounds.left += x;
bounds.right -= x;
bounds.top += y;
bounds.bottom -= y;
click(random(bounds.left, bounds.right), random(bounds.top, bounds.bottom));
},
sleepMs() {
var argLen = arguments.length;
let min = 0;
let max = 0;
if (argLen == 1) {
min = arguments[0];
max = arguments[0];
} else {
if (argLen < 2) {
return;
}
min = arguments[0];
max = arguments[1];
}
if (min >= max) {
sleep(min);
} else {
sleep(random(min, max));
}
},
sleep() {
var argLen = arguments.length;
let min = 0;
let max = 0;
if (argLen == 1) {
min = arguments[0];
max = arguments[0];
} else {
if (argLen < 2) {
return;
}
min = arguments[0];
max = arguments[1];
}
if (min >= max) {
sleep(min * 1000);
} else {
sleep(random(min, max) * 1000);
}
},
getUnix() {
return parseInt(Date.now() / 1000);
}
};
},
871: (module, __unused_webpack_exports, __webpack_require__) => {
if (__webpack_require__.g.floatyToastWindow === undefined) {
__webpack_require__.g.floatyToastWindow = floaty.rawWindow(`
`);
floatyToastWindow.setTouchable(false);
floatyToastWindow.setSize(-1, -2);
floatyToastWindow.setPosition(0, (ENV_CONF.screenHeight || device.height) * 0.75);
}
module.exports = {
currentRunPackage(packageName) {
return currentPackage() == conf.packageName || (app.launch(conf.packageName), false);
},
packageInfo(packageName) {
try {
return context.getPackageManager().getPackageInfo(packageName, 0);
} catch (e) {
return null;
}
},
checkVersion(packageName, versions) {
var info = this.packageInfo(packageName);
if (this.isEmpty(info)) {
alert("请安装抖音!");
return false;
} else {
packageName = app.getAppName(packageName);
return !!versions.includes(info.versionName) || (alert("不支持 " + packageName + "(" + info.versionName + "),请安装支持版本!"), false);
}
},
isEmpty(value) {
switch (typeof value) {
case "undefined":
return true;
case "string":
if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, "").length == 0) {
return true;
}
break;
case "boolean":
if (value) {
break;
}
return true;
case "number":
if (value === 0 || isNaN(value)) {
return true;
}
break;
case "object":
if (value !== null && value.length !== 0) {
for (var i in value) {
return false;
}
}
return true;
}
return false;
},
checkProbability(value, hdfs) {
var temp = random(1, 99);
console.log(hdfs + "计算概率:" + temp + (temp < value ? "未超出" : "超出") + value);
return temp < value;
},
strFindKeys(s, keys) {
for (w of keys) {
if (s.indexOf(w) != -1) {
return w;
}
}
return "";
},
error(packageName, e) {
if (e.fileName) {
packageName = this.packageInfo(packageName);
let versionName = "未知版本";
packageName = "版本号:" + (versionName = packageName && packageName.versionName ? packageName.versionName : versionName) + "\r\n";
packageName = (packageName = (packageName += "错误:" + e.toString() + "\r\n") + ("模块:" + e.fileName.replace(".js", "") + "\r\n")) + ("错误码:" + e.lineNumber + "\r\n") + "====================================\r\n";
files.write("/sdcard/error_bzy.log", packageName);
} else {
console.log("运行错误:", e.toString());
}
},
inputShow() {
for (var i = 0; auto.windows[i] != null; i++) {
if (auto.windows[i].type == 2) {
return true;
}
}
return false;
},
inputHide() {
while (this.inputShow()) {
back();
sleep(1000);
}
},
toast(msg) {
ui.run(function () {
console.log(msg);
floatyToastWindow.text.setText(msg);
floatyToastWindow.text.attr("visibility", "visible");
});
},
toastHide() {
try {
floatyToastWindow.text.attr("visibility", "invisible");
} catch (e) {}
},
objectToStr(obj) {
try {
var str = obj.toString();
var index = str.indexOf(";");
if (index === -1) {
return "";
} else {
return str.slice(0, index);
}
} catch (error) {
return "";
}
},
compareVersion(version1, version2) {
var arr1 = version1.split(".");
var arr2 = version2.split(".");
var length1 = arr1.length;
var length2 = arr2.length;
var minlength = Math.min(length1, length2);
let i = 0;
for (i; i < minlength; i++) {
var a = parseInt(arr1[i]);
var b = parseInt(arr2[i]);
if (b < a) {
return 1;
}
if (a < b) {
return -1;
}
}
if (length2 < length1) {
for (let j = i; j < length1; j++) {
if (parseInt(arr1[j]) != 0) {
return 1;
}
}
} else if (length1 < length2) {
for (let j = i; j < length2; j++) {
if (parseInt(arr2[j]) != 0) {
return -1;
}
}
}
return 0;
}
};
}
};
var __webpack_module_cache__ = {};
function __webpack_require__(moduleId) {
var cachedModule = __webpack_module_cache__[moduleId];
if (cachedModule === undefined) {
cachedModule = __webpack_module_cache__[moduleId] = {
exports: {}
};
__webpack_modules__[moduleId](cachedModule, cachedModule.exports, __webpack_require__);
}
return cachedModule.exports;
}
(() => {
__webpack_require__.g = function () {
if (typeof globalThis == "object") {
return globalThis;
}
try {
return this || new Function("return this")();
} catch (e) {
if (typeof window == "object") {
return window;
}
}
}();
})();
var __webpack_exports__ = {};
(() => {
var conf = __webpack_require__(81);
var engine = __webpack_require__(557);
var utility = __webpack_require__(871);
var douyin = __webpack_require__(954);
var param = {
yxgs: 500,
czjg1: 3,
czjg2: 6,
gksj1: 5,
gksj2: 10,
tglv: true,
dz: 45,
gz: 5,
pl: 35,
txdz: 60,
pldz: 80,
plhs: conf.commonts,
gjcs: ["77396094576", "60866194851"],
pltp: true
};
var znzf = {
banben: parseFloat(context.getPackageManager().getPackageInfo("com.ss.android.ugc.aweme", 0).versionName) < 27.4,
init() {
return !!douyin.init() && !(typeof ENV_CONF != "undefined" && Object.assign(param, ENV_CONF), param.pl > 0 && param.plhs.length < 1 ? (alert("请设置评论话术"), 1) : douyin.isRecommend() ? (utility.toast("开始任务:智能涨粉"), engine.sleep(1), device.keepScreenDim(), douyin.popupAndClose(), 0) : (alert("请在抖音首页运行"), 1));
},
isUserList() {
var tab = className("androidx.appcompat.app.ActionBar$Tab").visibleToUser().selected().findOnce();
return tab !== null && (tab.findOne(textContains("粉丝")) !== null || tab.findOne(textContains("关注")) !== null);
},
toUserList() {
while (true) {
sleep(2000);
if (this.isUserList()) {
return;
}
back();
sleep(1000);
}
},
execUser() {
engine.sleep(param.czjg1, param.czjg2);
if (!douyin.isHome()) {
utility.toast("进入主页失败");
return false;
}
if (text("私密账号").visibleToUser().findOnce() !== null || text("帐号已被封禁").visibleToUser().findOnce() !== null) {
utility.toast("私密或已封禁账号,跳过");
return false;
}
if (param.tglv && className("android.widget.TextView").visibleToUser().id(douyin.getNode("user.lanv").id).findOnce() !== null) {
utility.toast("蓝v用户,跳过!");
return false;
}
let fansNum = 0;
var fansNode = id(douyin.getNode("user.fansnum").id).visibleToUser().findOnce();
if (fansNode && (fansText = fansNode.text(), fansNum = parseFloat(fansText), fansText.indexOf("w") >= 0 || fansText.indexOf("万") >= 0)) {
fansNum *= 10000;
}
let gzNum = 0;
fansNode = id(douyin.getNode("user.gznum").id).visibleToUser().findOnce();
if (fansNode && (gzText = fansNode.text(), gzNum = parseFloat(gzText), gzText.indexOf("w") >= 0 || gzText.indexOf("万") >= 0)) {
gzNum *= 10000;
}
if (gzNum - fansNum < 1000) {
return false;
}
fansNode = textContains("作品").visibleToUser().findOnce();
let videoNum = 0;
if ((videoNum = fansNode ? parseInt(fansNode.text().replace(/[^0-9]/gi, "")) : videoNum) < 1 || isNaN(videoNum)) {
utility.toast("该用户没有作品或非正常用户,跳过");
return false;
}
if (this.banben && utility.checkProbability(param.txdz, "头像点赞")) {
douyin.execTxdz();
engine.sleepMs(1000, 2000);
}
if (utility.checkProbability(param.gz, "关注")) {
if (followBtn = id(douyin.getNode("user.followBtn").id).visibleToUser().findOnce()) {
utility.toast("执行关注!");
followBtn.click();
engine.sleepMs(500, 1000);
gzCount++;
if (followBtn = desc("更多,已展开").visibleToUser().findOne(5000)) {
followBtn.click();
engine.sleepMs(500, 1000);
}
} else {
utility.toast("不关注!");
}
}
var followBtn = utility.checkProbability(param.dz, "点赞");
var isPl = utility.checkProbability(param.pl, "评论");
if (followBtn || isPl) {
if (!fansNode.selected()) {
engine.boundsClick(fansNode.bounds());
engine.sleepMs(1000, 2000);
}
engine.shortSlide();
var fansNode = id("com.ss.android.ugc.aweme:id/container").visibleToUser().find();
if (!fansNode.empty()) {
let video = fansNode[random(0, fansNode.length - 1)];
video = video.findOne(className("android.view.View"));
sleep(1000);
if (video && video.clickable() && video.click() && douyin.IsVideoDelay(5000)) {
fansNode = random(param.gksj1, param.gksj2);
utility.toast("观看视频:" + fansNode + " 秒");
engine.sleep(fansNode);
if (followBtn) {
douyin.execLike();
dzCount++;
} else {
utility.toast("不点赞");
}
if (isPl && douyin.canComment()) {
fansNode = utility.checkProbability(param.pldz, "评论点赞");
douyin.sendComment(param.plhs, isPl, fansNode, param.pltp);
plCount++;
} else {
utility.toast("不评论");
}
} else {
utility.toast("打开视频失败!");
back();
sleep(1000);
}
}
}
return true;
},
dbzhgjc(gjc) {
engine.sleepMs(1000, 2000);
id("com.ss.android.ugc.aweme:id/et_search_kw").visibleToUser().findOne().setText(gjc);
engine.sleepMs(1000, 2000);
var b1 = text("搜索").visibleToUser().findOne().bounds();
engine.boundsClick(b1);
engine.sleepMs(3000, 4000);
var b1 = text("用户").visibleToUser().findOne().bounds();
engine.boundsClick(b1);
engine.sleepMs(3000, 4000);
var b1 = descContains(gjc).visibleToUser().findOne(5000);
if (b1 === null) {
alert("没有找到对标账号", "请检查对标账号 " + gjc + " 是否输入正确!");
return false;
} else {
engine.boundsClick(b1.bounds());
engine.sleepMs(3000, 4000);
text("粉丝").visibleToUser().findOne().parent().click();
engine.sleepMs(3000, 4000);
return !!id("com.ss.android.ugc.aweme:id/root_layout").exists() || (alert("打开粉丝列表失败", "对标账号 " + gjc + " 粉丝列表可能设置隐私了!"), false);
}
},
run() {
if (this.init()) {
let runCount = dzCount = gzCount = plCount = 0;
var userContents = [];
let gjcsCount = 0;
let dyc = true;
while (true) {
if (dyc && (descStartsWith("搜索").descEndsWith("按钮").visibleToUser().findOne().parent().click(), dyc = false, !this.dbzhgjc(param.gjcs[gjcsCount]))) {
break;
}
if (runCount >= param.yxgs) {
device.cancelKeepingAwake();
alert("恭喜任务完成!", "本次任务共完成\n点赞" + dzCount + "次\n关注" + gzCount + "次\n评论" + plCount + "次");
return;
}
let listBox = className("androidx.recyclerview.widget.RecyclerView").visibleToUser().findOne();
if (!listBox) {
utility.toast("没有找到用户列表!");
return;
}
var listBoxTop = listBox.bounds().top;
var childCount = listBox.childCount();
for (let i = 0; i < childCount - 1; i++) {
if (runCount >= param.yxgs) {
device.cancelKeepingAwake();
alert("恭喜任务完成!", "本次任务共完成\n点赞" + dzCount + "次\n关注" + gzCount + "次\n评论" + plCount + "次");
return;
}
utility.toast("已执行用户 " + runCount + " 条,任务数" + param.yxgs);
var child = listBox.child(i);
if (child != null && listBoxTop < child.bounds().top && !child.findOne(desc("已关注"))) {
var userNode = child.findOne(className("android.widget.TextView"));
if (userNode) {
userNode = userNode.text();
if (!utility.isEmpty(userNode) && !userContents.includes(userNode)) {
console.log(userNode);
if (userContents.length >= 20) {
userContents.shift();
}
userContents.push(userNode);
try {
child.click();
if (this.execUser()) {
runCount++;
}
} catch (error) {
console.log("用户操作失败:", error);
}
utility.toast("返回用户列表");
this.toUserList();
engine.sleepMs(2000, 3000);
if (!(listBox = className("androidx.recyclerview.widget.RecyclerView").visibleToUser().findOne())) {
utility.toast("没有找到用户列表!");
return;
}
}
} else {
console.log("没有获取到用户信息");
}
}
}
if (!listBox.scrollForward()) {
if (++gjcsCount >= param.gjcs.length) {
alert("对标账号已全部运行完!", "本次任务共完成\n点赞" + dzCount + "次\n关注" + gzCount + "次\n评论" + plCount + "次");
break;
}
engine.sleepMs(3000, 4000);
back();
engine.sleepMs(3000, 4000);
back();
engine.sleepMs(3000, 4000);
if (!this.dbzhgjc(param.gjcs[gjcsCount])) {
break;
}
}
engine.sleepMs(2500, 3500);
}
}
}
};
try {
znzf.run();
} catch (error) {
utility.error(conf.packageName, error);
} finally {
engine.exit();
}
})();
})();