Compare commits

..
8 Commits
Author SHA1 Message Date
shanmite c85ea6bc77 docs: 更新CHANGELOG 2021-11-29 15:49:16 +08:00
shanmite eae72dbdd7 feat: minfollower填0可关闭本地粉丝数筛选 2021-11-28 21:33:15 +08:00
shanmite 111602f248 perf: 日志显示是否转发过 2021-11-28 20:04:45 +08:00
shanmite d366e252e9 fix: 转发动态时非限制性错误码(#72)
```json
{
  "code":2201116,
  "msg":"请求数据发生错误,请刷新或稍后重试",
  "message":"请求数据发生错误,请刷新或稍后重试",
  "data":{}
}
```
2021-11-27 15:14:25 +08:00
shanmite 40dcc5f879 docs: 更新CHANGELOG 2021-11-17 16:49:04 +08:00
shanmite 8c0d96afc6 refactor: 检测是否已经发送过随机动态(#71)
* 优化随机动态发送逻辑
* 修复随机动态的部分bug
2021-11-17 16:42:17 +08:00
shanmite 09b6db4f8b feat: 新增设置check_session_pages(#66)
获取私信页数
- check_session_pages
- 默认16
2021-11-17 15:36:54 +08:00
shanmite 24e16ed8bc fix: 多帐号使用默认设置初始化(#70) 2021-11-17 15:20:43 +08:00
10 changed files with 98 additions and 38 deletions
+23
View File
@@ -1,5 +1,28 @@
<!-- markdownlint-disable MD036 MD024-->
# CHANGELOG
## 主要变化(2.3.6)
* eae72db feat: minfollower填0可关闭本地粉丝数筛选
* 111602f perf: 日志显示是否转发过
* d366e25 fix: 转发动态时非限制性错误码(#72)
## 较上一版本变化
* 变更可执行文件
_如果之前版本小于上一版本,请查看[CHANGELOG](CHANGELOG.md)变更说明_
**Full Changelog**: https://github.com/shanmiteko/LotteryAutoScript/compare/v2.3.5...v2.3.6
## 主要变化(2.3.5)
* 8c0d96a refactor: 检测是否已经发送过随机动态(#71)
* 09b6db4 feat: 新增设置`check_session_pages`(#66)
## 较上一版本变化
* 变更可执行文件
* [my_config.js](my_config.example.js)增加
- `check_session_pages` - 检查私信页数
_如果之前版本小于上一版本,请查看[CHANGELOG](CHANGELOG.md)变更说明_
**Full Changelog**: https://github.com/shanmiteko/LotteryAutoScript/compare/v2.3.4...v2.3.5
## 主要变化(2.3.4)
* 1962d97 fix: 过滤专栏时间失效(#67)
## 较上一版本变化
+3 -2
View File
@@ -10,7 +10,7 @@ const bili = require('./net/bili')
async function isMe() {
let desp = '';
const
{ notice_key_words, update_session_wait, get_session_wait } = config,
{ notice_key_words, update_session_wait, get_session_wait, check_session_pages } = config,
UnreadAtNum = await bili.getUnreadAtNum(),
UnreadSessionNum = await bili.getUnreadSessionNum(),
{ follow_unread, unfollow_unread } = UnreadSessionNum || { unfollow_unread: 0, follow_unread: 0 };
@@ -34,6 +34,7 @@ async function isMe() {
const check = async (type) => {
let session_t = '';
let MySession = await bili.getSessionInfo(type)
log.info("准备检查私信", check_session_pages + "页")
for (const index of infiniteNumber()) {
for (const Session of MySession.data) {
const { sender_uid, session_ts, timestamp, unread_count, talker_id, msg_seqno } = Session;
@@ -53,7 +54,7 @@ async function isMe() {
await delay(update_session_wait);
}
}
if (MySession.has_more && index < 16) {
if (MySession.has_more && index < check_session_pages) {
await delay(get_session_wait);
MySession = await bili.getSessionInfo(type, session_t)
} else {
+13 -8
View File
@@ -110,14 +110,19 @@ class Monitor extends Searcher {
continue
}
} else if (Lottery.uid[0]) {
const followerNum = await bili.getUserInfo(Lottery.uid[0]);
if (followerNum < 0) {
return 51
}
if (followerNum < config.minfollower) {
log.info('过滤', `粉丝数(${followerNum})小于指定数量`)
await delay(filter_wait)
continue
const { minfollower } = config
if (minfollower > 0) {
const followerNum = await bili.getUserInfo(Lottery.uid[0]);
if (followerNum < 0) {
return 51
}
if (followerNum < minfollower) {
log.info('过滤', `粉丝数(${followerNum})小于指定数量`)
await delay(filter_wait)
continue
}
} else {
log.info('过滤', "不过滤粉丝数")
}
}
+11 -5
View File
@@ -237,8 +237,6 @@ class Searcher {
const results = await pre
, { origin_dynamic_id } = cur;
log.info('获取动态', `查看源动态(${origin_dynamic_id})是否点赞 (${length--})`)
const card = await bili.getOneDynamicByDyid(origin_dynamic_id)
if (card) {
@@ -246,6 +244,11 @@ class Searcher {
const { is_liked } = parseDynamicCard(card)
log.info('获取动态', `查看源动态(${origin_dynamic_id})是否点赞 (${length--})`)
if (is_liked) {
log.info('获取动态', `动态(${origin_dynamic_id})已转发过`)
}
return [...results, {
lottery_info_type: 'uid',
create_time: cur.origin_create_time,
@@ -359,7 +362,6 @@ class Searcher {
/**遍历某专栏中的dyids */
for (const dyid of dyids_set) {
if (dyid.length === utils.dyid_length) {
log.info('获取动态', `查看专栏中所提及动态(${dyid})是否点赞 (${length--})`)
const card = await bili.getOneDynamicByDyid(dyid)
@@ -369,6 +371,7 @@ class Searcher {
const parsed_card = parseDynamicCard(card)
, { is_liked } = parsed_card;
log.info('获取动态', `查看专栏中所提及动态(${dyid})是否点赞 (${length--})`)
if (is_liked) {
log.info('获取动态', `动态(${dyid})已转发过`)
_weight += 1;
@@ -439,8 +442,6 @@ class Searcher {
const results = await pre
, { dyid } = cur;
log.info('获取动态', `查看动态(${dyid})是否点赞 (${length--})`)
const card = await bili.getOneDynamicByDyid(dyid)
if (card) {
@@ -448,6 +449,11 @@ class Searcher {
const { is_liked } = parseDynamicCard(card)
log.info('获取动态', `查看动态(${dyid})是否点赞 (${length--})`)
if (is_liked) {
log.info('获取动态', `动态(${dyid})已转发过`)
}
cur.is_liked = is_liked
return [...results, cur]
+6
View File
@@ -269,6 +269,11 @@ const config = {
"中奖|获得|填写|写上|提供|收货地址|支付宝账号|码|大会员"
],
/**
* - 获取私信页数
*/
check_session_pages: 16,
/**
* - 清理白名单uid或dyid
* - 英文逗号分隔 如: 1,2,3
@@ -340,6 +345,7 @@ const config = {
* @param {string} n
*/
updata(n) {
this.init()
this.setObject(this.raw_config()[`config_${n}`])
},
+23 -19
View File
@@ -8,32 +8,36 @@ const utils = require("../utils");
* @returns
*/
async function randomDynamic(num) {
const { create_dy_type, dy_contents, random_dynamic_wait } = config;
let dynamics = []
const
{ create_dy_type, dy_contents, random_dynamic_wait } = config,
hasShareVideo = create_dy_type === -1 || create_dy_type === 1,
hasRandomCreate = create_dy_type === -1 || create_dy_type === 0 || typeof create_dy_type === 'undefined';
if (create_dy_type === -1 || create_dy_type === 0 || typeof create_dy_type === 'undefined') {
if (hasShareVideo) {
dynamics = await bili.getTopRcmd()
for (let index = 0; dynamics.length < num; index++) {
dynamics.push(...await bili.getTopRcmd())
}
}
if (hasRandomCreate) {
for (let index = 0; index < num; index++) {
await bili.createDynamic(utils.getRandomOne(dy_contents));
await utils.delay(random_dynamic_wait);
dynamics.push(utils.getRandomOne(dy_contents))
}
}
if (create_dy_type === -1 || create_dy_type === 1) {
let videos = await bili.getTopRcmd()
for (let index = 0; videos.length < num; index++) {
videos.push(...await bili.getTopRcmd())
}
await utils.try_for_each(videos, async ([uid, aid]) => {
if (num--) {
await bili.shareVideo(uid, aid)
await utils.delay(random_dynamic_wait)
return false
await utils.try_for_each(
utils.shuffle(dynamics).slice(0, num),
async (dynamic) => {
await utils.delay(random_dynamic_wait)
if (dynamic instanceof Array && dynamic.length === 2 && typeof dynamic[0] === "number") {
return await bili.shareVideo(...dynamic)
} else {
return true
return await bili.createDynamic(dynamic)
}
})
}
}
)
}
module.exports = { randomDynamic }
+4 -2
View File
@@ -10,8 +10,10 @@ const { log } = utils;
async function createRandomDynamic(num) {
if (config.create_dy) {
log.info('随机动态', `准备创建${num}条随机动态`);
const Dynamic = await Searcher.checkAllDynamic(global_var.get("myUID"), 1);
if ((Dynamic.allModifyDynamicResArray[0] || { type: 0 }).type === 1) {
const
{ allModifyDynamicResArray } = await Searcher.checkAllDynamic(global_var.get("myUID"), 1),
{ type, orig_type } = allModifyDynamicResArray[0] || {};
if (type === 1 && orig_type !== 8) {
await randomDynamic(num)
} else {
log.info('随机动态', '已有非抽奖动态故无需创建');
+9 -1
View File
@@ -748,6 +748,9 @@ const bili_client = {
} else if (res.code === 1101004) {
log.warn('转发动态', '该动态不能转发分享');
return 0;
} else if (res.code === 2201116) {
log.warn('转发动态', '请求数据发生错误,请刷新或稍后重试');
return 0;
} else {
log.error('转发动态', `转发动态失败\n${responseText}`);
return 1;
@@ -760,7 +763,7 @@ const bili_client = {
* @property {number} img_height
* 发布一条动态
* @param { string | Picture[] } content
* @return {Promise<void>}
* @return {Promise<boolean>} isError true
*/
async createDynamic(content) {
let
@@ -790,8 +793,10 @@ const bili_client = {
});
if (/^{"code":0/.test(responseText)) {
log.info('发布动态', `成功创建一条随机内容的动态\n${JSON.stringify(content)}\n`);
return false
} else {
log.error('发布动态', `发布动态失败\n${JSON.stringify(content)}\n${responseText}`);
return true
}
},
/**
@@ -820,6 +825,7 @@ const bili_client = {
* 分享视频
* @param {number} uid
* @param {number} aid
* @return {boolean} isError true
*/
async shareVideo(uid, aid) {
const responseText = await post({
@@ -836,8 +842,10 @@ const bili_client = {
});
if (/^{"code":0/.test(responseText)) {
log.info('转发视频', `成功转发视频(av${aid})`);
return false
} else {
log.error('转发视频', `转发失败\n${responseText}`);
return true
}
},
/**
+5
View File
@@ -283,6 +283,11 @@ module.exports = Object.freeze({
"中奖|获得|填写|写上|提供|收货地址|支付宝账号|码|大会员"
],
/**
* - 获取私信页数
*/
check_session_pages: 16,
/**
* - 清理白名单uid或dyid
* - 英文逗号分隔 如: 1,2,3
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "lottery-auto-script",
"version": "2.3.4",
"version": "2.3.6",
"description": "自动参与B站动态抽奖",
"main": "main.js",
"scripts": {