mirror of
https://github.com/shanmiteko/LotteryAutoScript.git
synced 2026-06-12 21:03:13 +08:00
feat: 显示运行时间
This commit is contained in:
parent
8a81097198
commit
caf326c48e
@ -1,22 +1,21 @@
|
||||
@REM 下载代码到本地
|
||||
@REM 安装node(http://nodejs.cn/download/)
|
||||
|
||||
@REM Windows
|
||||
@REM 此批处理脚本为本地运行代码前设置环境变量时所需
|
||||
@REM 使用时先将本文件名改成env.bat
|
||||
@REM 填入相应的值
|
||||
@REM 需注意 % 要转义为 %%
|
||||
@REM npm run test_start 启动脚本
|
||||
@REM npm run test_check 检查是否中奖(只查看两个小时内的奖)
|
||||
@REM npm run test_clear 清空动态和关注(须set CLEAR=true)
|
||||
@REM 运行成功后在lib文件夹下会生成一个GlobalVar.json文件和dyid.txt文件
|
||||
@REM 换参数时须先将GlobalVar.json文件删除
|
||||
@REM 如果要运行多账号只能复制本项目并依次独立运行
|
||||
:: 下载代码到本地
|
||||
:: 安装node(http://nodejs.cn/download/)
|
||||
:: 此批处理脚本为本地运行代码前设置环境变量时所需
|
||||
:: 使用时先将本文件名改成env.bat
|
||||
:: 填入相应的值 ==需注意 % 要转义为 %%==
|
||||
:: 进入文件夹打开CMD
|
||||
:: npm run test_start 启动脚本
|
||||
:: npm run test_check 检查是否中奖(只查看两个小时内的奖)
|
||||
:: npm run test_clear 清空动态和关注(须set CLEAR=true)
|
||||
:: 运行成功后在lib文件夹下会生成一个GlobalVar.json文件和dyid.txt文件
|
||||
:: ==换参数时须先将GlobalVar.json文件删除==
|
||||
:: 如果要运行多账号只能复制本项目并依次独立运行
|
||||
:: ==注意运行时请去掉注释==
|
||||
set COOKIE=
|
||||
set NUMBER=1
|
||||
set CLEAR=
|
||||
set LOCALLAUNCH=true
|
||||
@REM 推送所需环境变量(可不填)
|
||||
:: 推送所需环境变量(可不填)
|
||||
set SCKEY=
|
||||
set SENDKEY=
|
||||
set QQ_SKEY=
|
||||
|
||||
15
lib/Base.js
15
lib/Base.js
@ -20,11 +20,11 @@ const Base = {
|
||||
const obj = JSON.parse(str);
|
||||
return typeof obj === 'object' ? obj : false
|
||||
} catch (_) {
|
||||
console.log(str);
|
||||
this.tooltip.log(str);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
console.log(`${str}\nIt is not a string!`);
|
||||
this.tooltip.log(`${str}\nIt is not a string!`);
|
||||
return false;
|
||||
}
|
||||
})(params);
|
||||
@ -110,6 +110,15 @@ const Base = {
|
||||
})
|
||||
});
|
||||
},
|
||||
/**提示信息 */
|
||||
tooltip: {
|
||||
log: (msg) => {
|
||||
console.log("%s: %s", new Date().toLocaleString(), msg)
|
||||
},
|
||||
warn: (msg) => {
|
||||
console.log("%s: %s", new Date().toLocaleString(), msg)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 提取开奖信息
|
||||
* @param {string} des 描述
|
||||
@ -180,7 +189,7 @@ const Base = {
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log('获取远程设置错误: ' + err);
|
||||
this.tooltip.log('获取远程设置错误: ' + err);
|
||||
resolve(JSON.parse('{}'));
|
||||
}
|
||||
})
|
||||
|
||||
@ -102,7 +102,7 @@ const BiliAPI = {
|
||||
success: responseText => {
|
||||
let res = Base.strToJson(responseText);
|
||||
if (res.code === 0) {
|
||||
console.log('[获取一页私信](20)成功 end_ts->' + ts_16);
|
||||
Base.tooltip.log('[获取一页私信](20)成功 end_ts->' + ts_16);
|
||||
/**@type {Array} */
|
||||
const sessions = res.data.session_list || [];
|
||||
const has_more = res.data.has_more;
|
||||
@ -113,7 +113,7 @@ const BiliAPI = {
|
||||
})
|
||||
resolve({ has_more, data })
|
||||
} else {
|
||||
console.log(`[获取私信]失败\n${responseText}`);
|
||||
Base.tooltip.log(`[获取私信]失败\n${responseText}`);
|
||||
resolve({ has_more: 0, data: [] });
|
||||
}
|
||||
}
|
||||
@ -139,9 +139,9 @@ const BiliAPI = {
|
||||
success: responseText => {
|
||||
let res = Base.strToJson(responseText);
|
||||
if (res.code === 0) {
|
||||
console.log(`[私信已读]成功 -> talker_id: ${talker_id}`);
|
||||
Base.tooltip.log(`[私信已读]成功 -> talker_id: ${talker_id}`);
|
||||
} else {
|
||||
console.log(`[私信已读]失败 -> talker_id: ${talker_id}`);
|
||||
Base.tooltip.log(`[私信已读]失败 -> talker_id: ${talker_id}`);
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -162,10 +162,10 @@ const BiliAPI = {
|
||||
success: responseText => {
|
||||
let res = Base.strToJson(responseText);
|
||||
if (res.code === 0) {
|
||||
console.log('[获取关注列表]成功');
|
||||
Base.tooltip.log('[获取关注列表]成功');
|
||||
resolve(res.data.list.toString());
|
||||
} else {
|
||||
console.log(`[获取关注列表]失败\n${responseText}`);
|
||||
Base.tooltip.log(`[获取关注列表]失败\n${responseText}`);
|
||||
resolve(null);
|
||||
}
|
||||
}
|
||||
@ -217,7 +217,7 @@ const BiliAPI = {
|
||||
success: responseText => {
|
||||
const res = Base.strToJson(responseText);
|
||||
if (res.code !== 0) {
|
||||
console.log('获取TagID失败');
|
||||
Base.tooltip.log('获取TagID失败');
|
||||
resolve(-1);
|
||||
}
|
||||
resolve(res.data.tag_id);
|
||||
@ -284,7 +284,7 @@ const BiliAPI = {
|
||||
if (res.code === 0) {
|
||||
resolve(res.data.follower);
|
||||
} else {
|
||||
console.log('获取关注数出错,可能是访问过频繁');
|
||||
Base.tooltip.log('获取关注数出错,可能是访问过频繁');
|
||||
resolve(0);
|
||||
}
|
||||
}
|
||||
@ -335,7 +335,7 @@ const BiliAPI = {
|
||||
isMe: isMe
|
||||
});
|
||||
} else {
|
||||
console.log(`获取开奖信息失败\n${responseText}`);
|
||||
Base.tooltip.log(`获取开奖信息失败\n${responseText}`);
|
||||
resolve({
|
||||
ts: 0,
|
||||
text: '获取开奖信息失败',
|
||||
@ -370,10 +370,10 @@ const BiliAPI = {
|
||||
success: responseText => {
|
||||
/* 重复关注code also equal 0 */
|
||||
if (/^{"code":0/.test(responseText)) {
|
||||
console.log('[自动关注]关注+1');
|
||||
Base.tooltip.log('[自动关注]关注+1');
|
||||
resolve(1);
|
||||
} else {
|
||||
console.log(`[自动关注]失败 尝试切换线路\n${responseText}`);
|
||||
Base.tooltip.log(`[自动关注]失败 尝试切换线路\n${responseText}`);
|
||||
Ajax.post({
|
||||
url: 'https://api.vc.bilibili.com/feed/v1/feed/SetUserFollow',
|
||||
hasCookies: true,
|
||||
@ -385,10 +385,10 @@ const BiliAPI = {
|
||||
},
|
||||
success: responseText => {
|
||||
if (/^{"code":0/.test(responseText)) {
|
||||
console.log('[自动关注]关注+1');
|
||||
Base.tooltip.log('[自动关注]关注+1');
|
||||
resolve(1);
|
||||
} else {
|
||||
console.log(`[自动关注]失败 尝试切换另一条线路\n${responseText}`);
|
||||
Base.tooltip.log(`[自动关注]失败 尝试切换另一条线路\n${responseText}`);
|
||||
Ajax.post({
|
||||
url: 'https://api.bilibili.com/x/relation/batch/modify',
|
||||
hasCookies: true,
|
||||
@ -401,10 +401,10 @@ const BiliAPI = {
|
||||
},
|
||||
success: responseText => {
|
||||
if (/^{"code":0/.test(responseText)) {
|
||||
console.log('[自动关注]关注+1');
|
||||
Base.tooltip.log('[自动关注]关注+1');
|
||||
resolve(1);
|
||||
} else {
|
||||
console.log(`[自动关注]失败\n${responseText}`);
|
||||
Base.tooltip.log(`[自动关注]失败\n${responseText}`);
|
||||
resolve(0);
|
||||
}
|
||||
}
|
||||
@ -437,10 +437,10 @@ const BiliAPI = {
|
||||
success: responseText => {
|
||||
/* 重复移动code also equal 0 */
|
||||
if (/^{"code":0/.test(responseText)) {
|
||||
console.log('[移动分区]up主分区移动成功');
|
||||
Base.tooltip.log('[移动分区]up主分区移动成功');
|
||||
resolve(1);
|
||||
} else {
|
||||
console.log(`[移动分区]up主分区移动失败\n${responseText}`);
|
||||
Base.tooltip.log(`[移动分区]up主分区移动失败\n${responseText}`);
|
||||
resolve(0);
|
||||
}
|
||||
}
|
||||
@ -468,10 +468,10 @@ const BiliAPI = {
|
||||
success: responseText => {
|
||||
const res = Base.strToJson(responseText);
|
||||
if (res.code === 0) {
|
||||
console.log('[自动取关]取关成功');
|
||||
Base.tooltip.log('[自动取关]取关成功');
|
||||
resolve(true)
|
||||
} else {
|
||||
console.log(`[自动取关]取关失败\n${responseText}`);
|
||||
Base.tooltip.log(`[自动取关]取关失败\n${responseText}`);
|
||||
resolve(false)
|
||||
}
|
||||
}
|
||||
@ -497,10 +497,10 @@ const BiliAPI = {
|
||||
},
|
||||
success: responseText => {
|
||||
if (/^{"code":0/.test(responseText)) {
|
||||
console.log('[自动点赞]点赞成功');
|
||||
Base.tooltip.log('[自动点赞]点赞成功');
|
||||
resolve(1);
|
||||
} else {
|
||||
console.log(`[转发动态]点赞失败\n${responseText}`);
|
||||
Base.tooltip.log(`[转发动态]点赞失败\n${responseText}`);
|
||||
resolve(0);
|
||||
}
|
||||
}
|
||||
@ -536,10 +536,10 @@ const BiliAPI = {
|
||||
},
|
||||
success: responseText => {
|
||||
if (/^{"code":0/.test(responseText)) {
|
||||
console.log('[转发动态]成功转发一条动态');
|
||||
Base.tooltip.log('[转发动态]成功转发一条动态');
|
||||
resolve(1);
|
||||
} else {
|
||||
console.log(`[转发动态]转发动态失败\n${responseText}`);
|
||||
Base.tooltip.log(`[转发动态]转发动态失败\n${responseText}`);
|
||||
resolve(0);
|
||||
}
|
||||
}
|
||||
@ -582,9 +582,9 @@ const BiliAPI = {
|
||||
data,
|
||||
success: responseText => {
|
||||
if (/^{"code":0/.test(responseText)) {
|
||||
console.log('[发布动态]成功创建一条随机内容的动态');
|
||||
Base.tooltip.log('[发布动态]成功创建一条随机内容的动态');
|
||||
} else {
|
||||
console.warn(`[发布动态]发布动态失败\n${responseText}`);
|
||||
Base.tooltip.warn(`[发布动态]发布动态失败\n${responseText}`);
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -606,10 +606,10 @@ const BiliAPI = {
|
||||
},
|
||||
success: responseText => {
|
||||
if (/^{"code":0/.test(responseText)) {
|
||||
console.log('[删除动态]成功删除一条动态');
|
||||
Base.tooltip.log('[删除动态]成功删除一条动态');
|
||||
resolve(true);
|
||||
} else {
|
||||
console.log(`[删除动态]删除动态失败\n${responseText}`);
|
||||
Base.tooltip.log(`[删除动态]删除动态失败\n${responseText}`);
|
||||
resolve(false);
|
||||
}
|
||||
}
|
||||
@ -642,13 +642,13 @@ const BiliAPI = {
|
||||
success: responseText => {
|
||||
const res = Base.strToJson(responseText);
|
||||
if (res.code === 0) {
|
||||
show ? console.log('[自动评论]评论成功') : void 0;
|
||||
show ? Base.tooltip.log('[自动评论]评论成功') : void 0;
|
||||
resolve(1);
|
||||
} else if (res.code === -404) {
|
||||
show ? console.log('[自动评论]原动态已删除') : void 0;
|
||||
show ? Base.tooltip.log('[自动评论]原动态已删除') : void 0;
|
||||
resolve(1);
|
||||
} else {
|
||||
show ? console.log('[自动评论]评论失败') : void 0;
|
||||
show ? Base.tooltip.log('[自动评论]评论失败') : void 0;
|
||||
resolve(0);
|
||||
}
|
||||
}
|
||||
@ -680,7 +680,7 @@ const BiliAPI = {
|
||||
success: responseText => {
|
||||
let obj = Base.strToJson(responseText);
|
||||
if (obj.code === 0) {
|
||||
console.log('[新建分区]分区新建成功');
|
||||
Base.tooltip.log('[新建分区]分区新建成功');
|
||||
let tagid = obj.data.tagid; /* 获取tagid */
|
||||
resolve(tagid);
|
||||
}
|
||||
@ -719,10 +719,10 @@ const BiliAPI = {
|
||||
res.data.forEach(d => {
|
||||
uids.push(d.mid);
|
||||
})
|
||||
console.log(`[获取分组${tagid}]成功获取取关分区列表${n}`);
|
||||
Base.tooltip.log(`[获取分组${tagid}]成功获取取关分区列表${n}`);
|
||||
resolve(uids)
|
||||
} else {
|
||||
console.warn(`[获取分组]获取取关分区列表失败\n${responseText}`);
|
||||
Base.tooltip.warn(`[获取分组]获取取关分区列表失败\n${responseText}`);
|
||||
resolve(uids)
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
const { createReadStream, createWriteStream } = require('fs')
|
||||
const unzip = require('unzipper');
|
||||
const { strToJson } = require("./Base")
|
||||
const { strToJson, tooltip } = require("./Base")
|
||||
const { HttpRequest } = require("./HttpRequest")
|
||||
|
||||
const { GITHUB_REPOSITORY } = process.env;
|
||||
@ -32,11 +32,11 @@ const GihubAPI = {
|
||||
resolve(data.artifacts[0])
|
||||
} else {
|
||||
resolve({})
|
||||
console.log('之前无构件');
|
||||
tooltip.log('之前无构件');
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log(err);
|
||||
tooltip.log(err);
|
||||
resolve({})
|
||||
}
|
||||
})
|
||||
@ -66,15 +66,15 @@ const GihubAPI = {
|
||||
const wtbs = createWriteStream('dyid.zip');
|
||||
res.resStream.on('data', chuck => {
|
||||
recv_length += chuck.length
|
||||
console.log(`已收到:${recv_length} Bytes`)
|
||||
tooltip.log(`已收到:${recv_length} Bytes`)
|
||||
})
|
||||
res.resStream.pipe(wtbs)
|
||||
wtbs.on('finish', () => {
|
||||
console.log('下载完成开始解压')
|
||||
tooltip.log('下载完成开始解压')
|
||||
createReadStream('dyid.zip').pipe(unzip.Extract({
|
||||
path: 'lib'
|
||||
}).on('close', () => {
|
||||
console.log('解压完成')
|
||||
tooltip.log('解压完成')
|
||||
resolve(true)
|
||||
}))
|
||||
}).on('error', () => {
|
||||
@ -83,7 +83,7 @@ const GihubAPI = {
|
||||
})
|
||||
},
|
||||
failure: err => {
|
||||
console.log(err);
|
||||
tooltip.log(err);
|
||||
resolve(false)
|
||||
}
|
||||
})
|
||||
@ -114,7 +114,7 @@ const GihubAPI = {
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log(err);
|
||||
tooltip.log(err);
|
||||
resolve(true)
|
||||
}
|
||||
})
|
||||
|
||||
@ -25,8 +25,8 @@ class Monitor extends Public {
|
||||
* 初始化
|
||||
*/
|
||||
async init() {
|
||||
if (config.model === '00') { console.log('已关闭所有转发行为'); return; }
|
||||
if (GlobalVar.Lottery.length === 0) { console.log('抽奖信息为空'); return; }
|
||||
if (config.model === '00') { Base.tooltip.log('已关闭所有转发行为'); return; }
|
||||
if (GlobalVar.Lottery.length === 0) { Base.tooltip.log('抽奖信息为空'); return; }
|
||||
this.tagid = await BiliAPI.checkMyPartition(); /* 检查关注分区 */
|
||||
this.attentionList = await BiliAPI.getAttentionList(GlobalVar.myUID); /* 获取关注列表 */
|
||||
await this.startLottery();
|
||||
@ -46,10 +46,10 @@ class Monitor extends Public {
|
||||
dyids.push(Lottery.dyid);
|
||||
}
|
||||
if (dyids.length) MyStorage.updateDyid(dyids.toString())
|
||||
console.log('开始转发下一组动态');
|
||||
Base.tooltip.log('开始转发下一组动态');
|
||||
} else {
|
||||
status = 1;
|
||||
console.log('无未转发抽奖');
|
||||
Base.tooltip.log('无未转发抽奖');
|
||||
}
|
||||
status ?
|
||||
eventBus.emit('Turn_on_the_Monitor') : eventBus.emit('Turn_off_the_Monitor');
|
||||
@ -190,7 +190,7 @@ class Monitor extends Public {
|
||||
const send = () => BiliAPI.sendChat(rid, Base.getRandomStr(config.chat), type);
|
||||
let [status, times] = [0, 0];
|
||||
do {
|
||||
if (times > 0) console.log('等一会儿再发送评论');
|
||||
if (times > 0) Base.tooltip.log('等一会儿再发送评论');
|
||||
times++;
|
||||
status = await send();
|
||||
if (status === 0) await Base.delay(5000 * 2 ** (times - 1))
|
||||
|
||||
@ -13,9 +13,9 @@ const MyStorage = {
|
||||
if (size_in_bytes) {
|
||||
GihubAPI.downloadArtifacts(PAT, id).then(async status => {
|
||||
if (status) {
|
||||
console.log('存储初始化成功');
|
||||
Base.tooltip.log('存储初始化成功');
|
||||
} else {
|
||||
console.log('存储初始化失败');
|
||||
Base.tooltip.log('存储初始化失败');
|
||||
await ifNotExistCreateFile('dyid.txt')
|
||||
}
|
||||
resolve()
|
||||
@ -45,7 +45,7 @@ const MyStorage = {
|
||||
resolve(status)
|
||||
})
|
||||
rs.on('error', err => {
|
||||
console.log(err)
|
||||
Base.tooltip.log(err)
|
||||
resolve(status)
|
||||
})
|
||||
})
|
||||
@ -55,7 +55,7 @@ const MyStorage = {
|
||||
* @param {string} dyid
|
||||
*/
|
||||
updateDyid: (dyid) => {
|
||||
console.log('写入已转发过的动态信息');
|
||||
Base.tooltip.log('写入已转发过的动态信息');
|
||||
return new Promise((resolve) => {
|
||||
const ws = Base.writeDyidFile();
|
||||
ws.write(dyid + ',', () => {
|
||||
@ -63,7 +63,7 @@ const MyStorage = {
|
||||
resolve()
|
||||
})
|
||||
ws.on('error', err => {
|
||||
console.log(err)
|
||||
Base.tooltip.log(err)
|
||||
resolve()
|
||||
})
|
||||
});
|
||||
|
||||
@ -37,7 +37,7 @@ class Public {
|
||||
* @returns {Promise<{allModifyDynamicResArray: UsefulDynamicInfo[];offset: string}>} 获取前 `pages*12` 个动态信息
|
||||
*/
|
||||
async checkAllDynamic(hostuid, pages, time = 0, _offset = '0') {
|
||||
console.log(`准备读取${pages}页自己的动态信息`);
|
||||
Base.tooltip.log(`准备读取${pages}页自己的动态信息`);
|
||||
const mDR = this.modifyDynamicRes,
|
||||
getOneDynamicInfoByUID = BiliAPI.getOneDynamicInfoByUID,
|
||||
curriedGetOneDynamicInfoByUID = Base.curryify(getOneDynamicInfoByUID); /* 柯里化的请求函数 */
|
||||
@ -52,7 +52,7 @@ class Public {
|
||||
let allModifyDynamicResArray = [];
|
||||
let offset = _offset;
|
||||
for (let i = 0; i < pages; i++) {
|
||||
console.log(`正在读取第${i + 1}页动态`);
|
||||
Base.tooltip.log(`正在读取第${i + 1}页动态`);
|
||||
let OneDynamicInfo = await hadUidGetOneDynamicInfoByUID(offset);
|
||||
const mDRdata = mDR(OneDynamicInfo);
|
||||
if (mDRdata === null) {
|
||||
@ -66,11 +66,11 @@ class Public {
|
||||
nextinfo = mDRdata.nextinfo;
|
||||
if (nextinfo.has_more === 0) {
|
||||
offset = nextinfo.next_offset;
|
||||
console.log(`成功读取${i + 1}页信息(已经是最后一页了故无法读取更多)`);
|
||||
Base.tooltip.log(`成功读取${i + 1}页信息(已经是最后一页了故无法读取更多)`);
|
||||
break;
|
||||
} else {
|
||||
allModifyDynamicResArray.push.apply(allModifyDynamicResArray, mDRArry);
|
||||
i + 1 < pages ? console.log(`开始读取第${i + 2}页动态信息`) : console.log(`${pages}页信息全部成功读取完成`);
|
||||
i + 1 < pages ? Base.tooltip.log(`开始读取第${i + 2}页动态信息`) : Base.tooltip.log(`${pages}页信息全部成功读取完成`);
|
||||
offset = nextinfo.next_offset;
|
||||
}
|
||||
await Base.delay(time);
|
||||
@ -88,7 +88,7 @@ class Public {
|
||||
jsonRes = strToJson(res),
|
||||
{ data } = jsonRes;
|
||||
if (jsonRes.code !== 0) {
|
||||
console.warn('获取动态数据出错,可能是访问太频繁');
|
||||
Base.tooltip.warn('获取动态数据出错,可能是访问太频繁');
|
||||
return null;
|
||||
}
|
||||
/* 字符串防止损失精度 */
|
||||
@ -102,7 +102,7 @@ class Public {
|
||||
*/
|
||||
let array = [];
|
||||
if (next.has_more === 0) {
|
||||
console.log('动态数据读取完毕');
|
||||
Base.tooltip.log('动态数据读取完毕');
|
||||
} else {
|
||||
/**
|
||||
* 空动态无cards
|
||||
@ -182,12 +182,12 @@ class Public {
|
||||
hotdy = await BiliAPI.getHotDynamicInfoByTagID(tag_id),
|
||||
modDR = self.modifyDynamicRes(hotdy);
|
||||
if (modDR === null) return null;
|
||||
console.log(`开始获取带话题#${tag_name}#的动态信息`);
|
||||
console.log('成功获取热门动态');
|
||||
Base.tooltip.log(`开始获取带话题#${tag_name}#的动态信息`);
|
||||
Base.tooltip.log('成功获取热门动态');
|
||||
let mDRdata = modDR.modifyDynamicResArray; /* 热门动态 */
|
||||
let next_offset = modDR.nextinfo.next_offset;
|
||||
for (let index = 0; index < 3; index++) {
|
||||
console.log(`成功读取${index + 1}页动态`);
|
||||
Base.tooltip.log(`成功读取${index + 1}页动态`);
|
||||
const newdy = await BiliAPI.getOneDynamicInfoByTag(tag_name, next_offset);
|
||||
const _modify = self.modifyDynamicRes(newdy);
|
||||
if (_modify === null) return null;
|
||||
@ -210,7 +210,7 @@ class Public {
|
||||
hasOfficialLottery: o.hasOfficialLottery
|
||||
};
|
||||
})
|
||||
console.log(`成功获取带话题#${tag_name}#的动态信息`);
|
||||
Base.tooltip.log(`成功获取带话题#${tag_name}#的动态信息`);
|
||||
return fomatdata
|
||||
}
|
||||
/**
|
||||
@ -220,7 +220,7 @@ class Public {
|
||||
* @returns {Promise<LotteryInfo[] | null>}
|
||||
*/
|
||||
async getLotteryInfoByUID(UID) {
|
||||
console.log(`开始获取用户${UID}的动态信息`);
|
||||
Base.tooltip.log(`开始获取用户${UID}的动态信息`);
|
||||
const { allModifyDynamicResArray: aMDRA } = await this.checkAllDynamic(UID, 3, 500);
|
||||
if (!aMDRA.length) return null;
|
||||
const fomatdata = aMDRA.map(o => {
|
||||
@ -238,7 +238,7 @@ class Public {
|
||||
hasOfficialLottery: o.origin_hasOfficialLottery
|
||||
}
|
||||
}).filter(a => a.type === 0 ? false : true)
|
||||
console.log(`成功获取用户${UID}的动态信息`);
|
||||
Base.tooltip.log(`成功获取用户${UID}的动态信息`);
|
||||
return fomatdata;
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,9 +11,9 @@ async function delDynamic () {
|
||||
const { allModifyDynamicResArray, offset: _offset } = await Public.prototype.checkAllDynamic(GlobalVar.myUID, 1, 5 * 1000, offset);
|
||||
offset = _offset;
|
||||
if (index < 2) {
|
||||
console.log(`跳过第${index + 1}页(12条)`);
|
||||
Base.tooltip.log(`跳过第${index + 1}页(12条)`);
|
||||
} else {
|
||||
console.log(`开始读取第${index + 1}页(12条)`);
|
||||
Base.tooltip.log(`开始读取第${index + 1}页(12条)`);
|
||||
for (let index = 0; index < allModifyDynamicResArray.length; index++) {
|
||||
const res = allModifyDynamicResArray[index];
|
||||
const { type, dynamic_id } = res;
|
||||
@ -23,14 +23,14 @@ async function delDynamic () {
|
||||
}
|
||||
await Base.delay(8e3);
|
||||
}
|
||||
console.log(`第${index}页中的转发动态全部删除成功`)
|
||||
Base.tooltip.log(`第${index}页中的转发动态全部删除成功`)
|
||||
}
|
||||
if (offset === '0') break;
|
||||
}
|
||||
}
|
||||
async function unFollow () {
|
||||
const tagid = await checkMyPartition();
|
||||
if (tagid === 0) { console.log('未能成功获取关注分区id'); return }
|
||||
if (tagid === 0) { Base.tooltip.log('未能成功获取关注分区id'); return }
|
||||
let rmup = [];
|
||||
for (let index = 1; index < 42; index++) {
|
||||
const uids = await BiliAPI.getPartitionUID(tagid, index);
|
||||
|
||||
@ -35,8 +35,8 @@ function start() {
|
||||
/* 注册事件 */
|
||||
eventBus.on('Turn_on_the_Monitor', () => {
|
||||
if (times.value() === GlobalVar.Lottery.length) {
|
||||
console.log('所有动态转发完毕');
|
||||
console.log('[运行结束]目前无抽奖信息,过一会儿再来看看吧');
|
||||
Base.tooltip.log('所有动态转发完毕');
|
||||
Base.tooltip.log('[运行结束]目前无抽奖信息,过一会儿再来看看吧');
|
||||
times.clear();
|
||||
createRandomDynamic()
|
||||
resolve()
|
||||
@ -47,7 +47,7 @@ function start() {
|
||||
(new Monitor(isNaN(nlottery) ? lottery : nlottery)).init();
|
||||
});
|
||||
eventBus.on('Turn_off_the_Monitor', () => {
|
||||
console.log('[运行结束]出现异常程序自动关闭');
|
||||
Base.tooltip.log('[运行结束]出现异常程序自动关闭');
|
||||
createRandomDynamic()
|
||||
resolve()
|
||||
})
|
||||
@ -55,12 +55,12 @@ function start() {
|
||||
eventBus.emit('Turn_on_the_Monitor');
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
console.log('运行时间超过Actions上限 - 6小时');
|
||||
Base.tooltip.log('运行时间超过Actions上限 - 6小时');
|
||||
eventBus.emit('Turn_off_the_Monitor')
|
||||
}, MAX_TIME);
|
||||
GihubAPI.hasLotteryRun().then(s => {
|
||||
if (s) {
|
||||
console.log("有冲突的工作流故终止此任务");
|
||||
Base.tooltip.log("有冲突的工作流故终止此任务");
|
||||
resolve()
|
||||
} else {
|
||||
eventBus.emit('Turn_on_the_Monitor');
|
||||
@ -78,7 +78,7 @@ async function isMe() {
|
||||
let MySession = await BiliAPI.getSessionInfo();
|
||||
let desp = '';
|
||||
if (MyAtInfo.length) {
|
||||
console.log('<-- 正在检查at');
|
||||
Base.tooltip.log('<-- 正在检查at');
|
||||
MyAtInfo.forEach(async AtInfo => {
|
||||
const { at_time, up_uname, business, source_content, url } = AtInfo
|
||||
if ((Date.now() / 1000 - at_time) / 3600 >= 2) {
|
||||
@ -91,10 +91,10 @@ async function isMe() {
|
||||
desp += `[直达链接](${url}) \n\n`
|
||||
desp += `--------------------- \n\n`
|
||||
});
|
||||
console.log('--> OK');
|
||||
Base.tooltip.log('--> OK');
|
||||
}
|
||||
if (MySession.data.length) {
|
||||
console.log('<-- 正在检查私信')
|
||||
Base.tooltip.log('<-- 正在检查私信')
|
||||
let session_t = '';
|
||||
let max = 0;
|
||||
do {
|
||||
@ -122,13 +122,13 @@ async function isMe() {
|
||||
}
|
||||
max++
|
||||
} while (MySession.has_more && max < 10);
|
||||
console.log('--> OK');
|
||||
Base.tooltip.log('--> OK');
|
||||
}
|
||||
if (desp) {
|
||||
console.log(desp);
|
||||
Base.tooltip.log(desp);
|
||||
sendNotify('可能中奖了!', desp);
|
||||
} else {
|
||||
console.log("未中奖");
|
||||
Base.tooltip.log("未中奖");
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -139,10 +139,10 @@ async function isMe() {
|
||||
*/
|
||||
async function checkCookie(num) {
|
||||
if (await BiliAPI.getMyinfo()) {
|
||||
console.log('成功登录');
|
||||
Base.tooltip.log('成功登录');
|
||||
return true;
|
||||
} else {
|
||||
console.log(`登录失败 COOKIE${num} 已失效 UID:${GlobalVar.myUID}`);
|
||||
Base.tooltip.log(`登录失败 COOKIE${num} 已失效 UID:${GlobalVar.myUID}`);
|
||||
sendNotify('动态抽奖出错-登录失败', `COOKIE${num} 已失效 UID:${GlobalVar.myUID}`)
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
const { tooltip } = require("./Base");
|
||||
const { HttpRequest } = require("./HttpRequest");
|
||||
|
||||
// =======================================微信server酱通知设置区域===========================================
|
||||
@ -173,26 +174,26 @@ function serverNotify(text, desp) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.errno === 0) {
|
||||
console.log('server酱发送通知消息成功\n')
|
||||
tooltip.log('server酱发送通知消息成功\n')
|
||||
} else if (data.errno === 1024) {
|
||||
// 一分钟内发送相同的内容会触发
|
||||
console.log(`server酱发送通知消息异常: ${data.errmsg}\n`)
|
||||
tooltip.log(`server酱发送通知消息异常: ${data.errmsg}\n`)
|
||||
} else {
|
||||
console.log(`server酱发送通知消息异常\n${JSON.stringify(data)}`)
|
||||
tooltip.log(`server酱发送通知消息异常\n${JSON.stringify(data)}`)
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
tooltip.log(error);
|
||||
} finally {
|
||||
resolve()
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log('发送通知调用API失败!!\n')
|
||||
tooltip.log('发送通知调用API失败!!\n')
|
||||
throw new Error(err);
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('您未提供server酱的SCKEY,取消微信推送消息通知\n');
|
||||
tooltip.log('您未提供server酱的SCKEY,取消微信推送消息通知\n');
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
@ -218,26 +219,26 @@ function serverNotifyTurbo(text, desp) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.errno === 0) {
|
||||
console.log('server酱(Turbo版)发送通知消息成功\n')
|
||||
tooltip.log('server酱(Turbo版)发送通知消息成功\n')
|
||||
} else if (data.errno === 1024) {
|
||||
// 一分钟内发送相同的内容会触发
|
||||
console.log(`server酱(Turbo版)发送通知消息异常: ${data.errmsg}\n`)
|
||||
tooltip.log(`server酱(Turbo版)发送通知消息异常: ${data.errmsg}\n`)
|
||||
} else {
|
||||
console.log(`server酱(Turbo版)发送通知消息异常\n${JSON.stringify(data)}`)
|
||||
tooltip.log(`server酱(Turbo版)发送通知消息异常\n${JSON.stringify(data)}`)
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
tooltip.log(error);
|
||||
} finally {
|
||||
resolve()
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log('发送通知调用API失败!!\n')
|
||||
tooltip.log('发送通知调用API失败!!\n')
|
||||
throw new Error(err);
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('您未提供server酱(Turbo版)的SCKEY,取消微信推送消息通知\n');
|
||||
tooltip.log('您未提供server酱(Turbo版)的SCKEY,取消微信推送消息通知\n');
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
@ -275,25 +276,25 @@ function coolPush(text, desp) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.code === 200) {
|
||||
console.log(`酷推发送${pushMode(QQ_MODE)}通知消息成功\n`)
|
||||
tooltip.log(`酷推发送${pushMode(QQ_MODE)}通知消息成功\n`)
|
||||
} else if (data.code === 400) {
|
||||
console.log(`QQ酷推(Cool Push)发送${pushMode(QQ_MODE)}推送失败:${data}\n`)
|
||||
tooltip.log(`QQ酷推(Cool Push)发送${pushMode(QQ_MODE)}推送失败:${data}\n`)
|
||||
} else {
|
||||
console.log(`酷推推送异常: ${data.msg}`);
|
||||
tooltip.log(`酷推推送异常: ${data.msg}`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
tooltip.log(error);
|
||||
} finally {
|
||||
resolve()
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log(`发送${pushMode(QQ_MODE)}通知调用API失败!!\n`)
|
||||
tooltip.log(`发送${pushMode(QQ_MODE)}通知调用API失败!!\n`)
|
||||
throw new Error(err);
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('您未提供酷推的SKEY,取消QQ推送消息通知\n');
|
||||
tooltip.log('您未提供酷推的SKEY,取消QQ推送消息通知\n');
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
@ -319,24 +320,24 @@ function barkNotify(text, desp, params = {}) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.code === 200) {
|
||||
console.log('Bark APP发送通知消息成功\n')
|
||||
tooltip.log('Bark APP发送通知消息成功\n')
|
||||
} else {
|
||||
console.log(`${data.message}\n`);
|
||||
tooltip.log(`${data.message}\n`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
tooltip.log(error);
|
||||
} finally {
|
||||
resolve()
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log('Bark APP发送通知调用API失败!!\n');
|
||||
tooltip.log('Bark APP发送通知调用API失败!!\n');
|
||||
resolve();
|
||||
throw new Error(err)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('您未提供Bark的APP推送BARK_PUSH,取消Bark推送消息通知\n');
|
||||
tooltip.log('您未提供Bark的APP推送BARK_PUSH,取消Bark推送消息通知\n');
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
@ -365,20 +366,20 @@ function tgBotNotify(text, desp) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.ok) {
|
||||
console.log('Telegram发送通知消息完成。\n')
|
||||
tooltip.log('Telegram发送通知消息完成。\n')
|
||||
} else if (data.error_code === 400) {
|
||||
console.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n')
|
||||
tooltip.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n')
|
||||
} else if (data.error_code === 401) {
|
||||
console.log('Telegram bot token 填写错误。\n')
|
||||
tooltip.log('Telegram bot token 填写错误。\n')
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
tooltip.log(error);
|
||||
} finally {
|
||||
resolve()
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log('telegram发送通知消息失败!!\n')
|
||||
tooltip.log('telegram发送通知消息失败!!\n')
|
||||
resolve()
|
||||
throw new Error(err)
|
||||
}
|
||||
@ -391,7 +392,7 @@ function tgBotNotify(text, desp) {
|
||||
}
|
||||
HttpRequest(options)
|
||||
} else {
|
||||
console.log('您未提供telegram机器人推送所需的TG_BOT_TOKEN和TG_USER_ID,取消telegram推送消息通知\n');
|
||||
tooltip.log('您未提供telegram机器人推送所需的TG_BOT_TOKEN和TG_USER_ID,取消telegram推送消息通知\n');
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
@ -430,18 +431,18 @@ function ddBotNotify(text, desp) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.errcode === 0) {
|
||||
console.log('钉钉发送通知消息完成。\n')
|
||||
tooltip.log('钉钉发送通知消息完成。\n')
|
||||
} else {
|
||||
console.log(`${data.errmsg}\n`)
|
||||
tooltip.log(`${data.errmsg}\n`)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
tooltip.log(e);
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log('钉钉发送通知消息失败!!\n')
|
||||
tooltip.log('钉钉发送通知消息失败!!\n')
|
||||
throw new Error(err);
|
||||
}
|
||||
})
|
||||
@ -469,24 +470,24 @@ function ddBotNotify(text, desp) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.errcode === 0) {
|
||||
console.log('钉钉发送通知消息完成。\n')
|
||||
tooltip.log('钉钉发送通知消息完成。\n')
|
||||
} else {
|
||||
console.log(`${data.errmsg}\n`)
|
||||
tooltip.log(`${data.errmsg}\n`)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
tooltip.log(e);
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log('钉钉发送通知消息失败!!\n');
|
||||
tooltip.log('钉钉发送通知消息失败!!\n');
|
||||
resolve();
|
||||
throw new Error(err)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('您未提供钉钉机器人推送所需的DD_BOT_TOKEN或者DD_BOT_SECRET,取消钉钉推送消息通知\n');
|
||||
tooltip.log('您未提供钉钉机器人推送所需的DD_BOT_TOKEN或者DD_BOT_SECRET,取消钉钉推送消息通知\n');
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
@ -515,24 +516,24 @@ function qywxBotNotify(text, desp) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.errcode === 0) {
|
||||
console.log('企业微信发送通知消息完成。\n');
|
||||
tooltip.log('企业微信发送通知消息完成。\n');
|
||||
} else {
|
||||
console.log(`${data.errmsg}\n`);
|
||||
tooltip.log(`${data.errmsg}\n`);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
tooltip.log(e);
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log('企业微信发送通知消息失败!!\n');
|
||||
tooltip.log('企业微信发送通知消息失败!!\n');
|
||||
resolve();
|
||||
throw new Error(err)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('您未提供企业微信机器人推送所需的QYWX_KEY,取消企业微信推送消息通知\n');
|
||||
tooltip.log('您未提供企业微信机器人推送所需的QYWX_KEY,取消企业微信推送消息通知\n');
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
@ -544,7 +545,7 @@ function iGotNotify(text, desp, params = {}) {
|
||||
// 校验传入的IGOT_PUSH_KEY是否有效
|
||||
const IGOT_PUSH_KEY_REGX = new RegExp("^[a-zA-Z0-9]{24}$")
|
||||
if (!IGOT_PUSH_KEY_REGX.test(IGOT_PUSH_KEY)) {
|
||||
console.log('您所提供的IGOT_PUSH_KEY无效\n')
|
||||
tooltip.log('您所提供的IGOT_PUSH_KEY无效\n')
|
||||
resolve()
|
||||
return
|
||||
}
|
||||
@ -567,24 +568,24 @@ function iGotNotify(text, desp, params = {}) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.ret === 0) {
|
||||
console.log('iGot发送通知消息成功\n')
|
||||
tooltip.log('iGot发送通知消息成功\n')
|
||||
} else {
|
||||
console.log(`iGot发送通知消息失败:${data.errMsg}\n`)
|
||||
tooltip.log(`iGot发送通知消息失败:${data.errMsg}\n`)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
tooltip.log(e);
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log('发送通知调用API失败!!\n')
|
||||
tooltip.log('发送通知调用API失败!!\n')
|
||||
resolve();
|
||||
throw new Error(err)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('您未提供iGot的推送IGOT_PUSH_KEY,取消iGot推送消息通知\n');
|
||||
tooltip.log('您未提供iGot的推送IGOT_PUSH_KEY,取消iGot推送消息通知\n');
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
@ -613,24 +614,24 @@ function pushPlusNotify(text, desp) {
|
||||
try {
|
||||
const data = JSON.parse(res.body);
|
||||
if (data.code === 200) {
|
||||
console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成。\n`)
|
||||
tooltip.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成。\n`)
|
||||
} else {
|
||||
console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败:${data.msg}\n`)
|
||||
tooltip.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败:${data.msg}\n`)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
tooltip.log(e);
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
},
|
||||
failure: err => {
|
||||
console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败!!\n`)
|
||||
tooltip.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败!!\n`)
|
||||
resolve();
|
||||
throw new Error(err)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('您未提供push+推送所需的PUSH_PLUS_TOKEN,取消push+推送消息通知\n');
|
||||
tooltip.log('您未提供push+推送所需的PUSH_PLUS_TOKEN,取消push+推送消息通知\n');
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
|
||||
11
main.js
11
main.js
@ -1,10 +1,11 @@
|
||||
const { tooltip } = require("./lib/Base");
|
||||
const { setVariable } = require("./lib/setVariable");
|
||||
|
||||
const { NUMBER, CLEAR, COOKIE, PAT, LOCALLAUNCH } = process.env;
|
||||
|
||||
((async () => {
|
||||
if (typeof COOKIE === 'string' && COOKIE.length > 10) {
|
||||
if (!LOCALLAUNCH && !PAT) { console.log('请查看README文件, 填入相应的PAT'); return; }
|
||||
if (!LOCALLAUNCH && !PAT) { tooltip.log('请查看README文件, 填入相应的PAT'); return; }
|
||||
await setVariable(COOKIE);
|
||||
const { start, isMe, checkCookie } = require("./lib/lottery-in-nodejs");
|
||||
const { clear } = require("./lib/clear");
|
||||
@ -13,18 +14,18 @@ const { NUMBER, CLEAR, COOKIE, PAT, LOCALLAUNCH } = process.env;
|
||||
switch (process.argv.slice(2)[0]) {
|
||||
case 'start':
|
||||
await setVariable('', PAT);
|
||||
console.log('开始参与抽奖');
|
||||
tooltip.log('开始参与抽奖');
|
||||
await start();
|
||||
break;
|
||||
case 'check':
|
||||
console.log('检查是否中奖');
|
||||
tooltip.log('检查是否中奖');
|
||||
await isMe();
|
||||
break;
|
||||
case 'clear':
|
||||
if (CLEAR === 'true') {
|
||||
console.log('开始清理动态');
|
||||
tooltip.log('开始清理动态');
|
||||
await clear();
|
||||
console.log('清理动态完毕');
|
||||
tooltip.log('清理动态完毕');
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user