diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c1ecd2..15080ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,31 @@ # 本项目Log + + +## v0.9.6.210625 alpha (2021-06-25) + +### Added + +- + +### Changed + +- 优化动态过滤 +- 优化过滤关键字 +- 优化短信登录流程 +- + +### Fixed + +- 修复动态转发 +- + +### Remarks + +- 注意配置文件有些许改动 +- + ## v0.9.5.210624 alpha (2021-06-24) ### Added diff --git a/README.md b/README.md index 3221ea6..022ba53 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@

- + @@ -37,40 +37,40 @@ | plugin | status | version | description | |-----------------|--------|----------|---------------------------------------------| -| CheckUpdate | true | 21.06.24 | 程序检查更新 | -| Login | true | 21.06.24 | 账号登录、刷新、维持 | -| Schedule | true | 21.06.24 | 控制插件运行周期 | -| MainSite | true | 21.06.24 | 投币、观看、分享视频 (速升6级不是梦) | -| DailyBag | true | 21.06.24 | 双端领取日常/周常礼包 | -| ManGa | true | 21.06.24 | 漫画签到、分享 | -| ActivityLottery | true | 21.06.24 | 主站活动九宫格抽奖 | -| Competition | true | 21.06.24 | 游戏赛事竞猜 | -| DoubleHeart | true | 21.06.24 | 双端心跳 (姥爷直播经验) | -| DailyTask | true | 21.06.24 | 直播每日任务(签到、观看) | -| Barrage | true | 21.06.24 | 保持活跃弹幕 | -| Silver2Coin | true | 21.06.24 | 银瓜子兑换硬币 | -| Judge | true | 21.06.24 | 风纪委员投票 | -| GiftSend | true | 21.06.24 | 礼物赠送、维持每日勋章亲密度 | -| GroupSignIn | true | 21.06.24 | 友爱社签到 | -| GiftHeart | true | 21.06.24 | 日常心跳每日礼包礼物 | -| SmallHeart | true | 21.06.24 | 直播挂机,每日24个小心心 | -| MaterialObject | true | 21.06.24 | 直播金色宝箱实物抽奖 | -| AloneTcpClient | true | 21.06.24 | 作者的独立直播监控(可支持本项目哦) | -| ZoneTcpClient | true | 21.06.24 | 官方的分区直播监控 | -| StormRaffle | true | 21.06.24 | 直播节奏风暴抽奖、亿元 | -| GiftRaffle | true | 21.06.24 | 直播礼物抽奖 | -| PkRaffle | true | 21.06.24 | 直播大乱斗抽奖 | -| GuardRaffle | true | 21.06.24 | 直播大航海抽奖 | -| AnchorRaffle | true | 21.06.24 | 直播天选时刻抽奖 | -| GiftRaffle | true | 21.06.24 | 直播礼物抽奖 | -| AwardRecord | true | 21.06.24 | 最新的中奖纪录通知 | -| Forward | true | 21.06.24 | 主站动态抽奖转发 | -| CapsuleLottery | true | 21.06.24 | 直播扭蛋活动抽奖 | -| PolishTheMedal | true | 21.06.24 | 每日自动点亮灰色勋章 | -| CapsuleLottery | true | 21.06.24 | 直播扭蛋活动抽奖 | -| VipPrivilege | true | 21.06.24 | 每月领取年度大会员特权(B币券、会员购优惠券) | -| BpConsumption | true | 21.06.24 | 每月消费使用年度大会员特权的B币券 | -| Statistics | true | 21.06.24 | 全局抽奖结果统计 | +| CheckUpdate | true | 21.06.25 | 程序检查更新 | +| Login | true | 21.06.25 | 账号登录、刷新、维持 | +| Schedule | true | 21.06.25 | 控制插件运行周期 | +| MainSite | true | 21.06.25 | 投币、观看、分享视频 (速升6级不是梦) | +| DailyBag | true | 21.06.25 | 双端领取日常/周常礼包 | +| ManGa | true | 21.06.25 | 漫画签到、分享 | +| ActivityLottery | true | 21.06.25 | 主站活动九宫格抽奖 | +| Competition | true | 21.06.25 | 游戏赛事竞猜 | +| DoubleHeart | true | 21.06.25 | 双端心跳 (姥爷直播经验) | +| DailyTask | true | 21.06.25 | 直播每日任务(签到、观看) | +| Barrage | true | 21.06.25 | 保持活跃弹幕 | +| Silver2Coin | true | 21.06.25 | 银瓜子兑换硬币 | +| Judge | true | 21.06.25 | 风纪委员投票 | +| GiftSend | true | 21.06.25 | 礼物赠送、维持每日勋章亲密度 | +| GroupSignIn | true | 21.06.25 | 友爱社签到 | +| GiftHeart | true | 21.06.25 | 日常心跳每日礼包礼物 | +| SmallHeart | true | 21.06.25 | 直播挂机,每日24个小心心 | +| MaterialObject | true | 21.06.25 | 直播金色宝箱实物抽奖 | +| AloneTcpClient | true | 21.06.25 | 作者的独立直播监控(可支持本项目哦) | +| ZoneTcpClient | true | 21.06.25 | 官方的分区直播监控 | +| StormRaffle | true | 21.06.25 | 直播节奏风暴抽奖、亿元 | +| GiftRaffle | true | 21.06.25 | 直播礼物抽奖 | +| PkRaffle | true | 21.06.25 | 直播大乱斗抽奖 | +| GuardRaffle | true | 21.06.25 | 直播大航海抽奖 | +| AnchorRaffle | true | 21.06.25 | 直播天选时刻抽奖 | +| GiftRaffle | true | 21.06.25 | 直播礼物抽奖 | +| AwardRecord | true | 21.06.25 | 最新的中奖纪录通知 | +| Forward | true | 21.06.25 | 主站动态抽奖转发 | +| CapsuleLottery | true | 21.06.25 | 直播扭蛋活动抽奖 | +| PolishTheMedal | true | 21.06.25 | 每日自动点亮灰色勋章 | +| CapsuleLottery | true | 21.06.25 | 直播扭蛋活动抽奖 | +| VipPrivilege | true | 21.06.25 | 每月领取年度大会员特权(B币券、会员购优惠券) | +| BpConsumption | true | 21.06.25 | 每月消费使用年度大会员特权的B币券 | +| Statistics | true | 21.06.25 | 全局抽奖结果统计 | | Silver | false | 21.03.27 | 直播银瓜子自动开启宝箱 | ## 交流反馈 diff --git a/composer.lock b/composer.lock index 8deaef9..62ecc11 100644 --- a/composer.lock +++ b/composer.lock @@ -892,16 +892,16 @@ }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "6cccbddfcfc742eb02158d6137ca5687d92cee32" + "reference": "13af2502d9bb6f7d33be2de4b51fb68c6cdb476e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6cccbddfcfc742eb02158d6137ca5687d92cee32", - "reference": "6cccbddfcfc742eb02158d6137ca5687d92cee32", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/13af2502d9bb6f7d33be2de4b51fb68c6cdb476e", + "reference": "13af2502d9bb6f7d33be2de4b51fb68c6cdb476e", "shasum": "", "mirrors": [ { @@ -956,7 +956,7 @@ "type": "community_bridge" } ], - "time": "2021-02-25T21:54:58+00:00" + "time": "2021-06-24T12:49:22+00:00" }, { "name": "lkeme/inifile", diff --git a/conf/user.ini.example b/conf/user.ini.example index 2e355d1..2c5dc91 100644 --- a/conf/user.ini.example +++ b/conf/user.ini.example @@ -11,6 +11,10 @@ password = "" [login.mode] mode = 1 +; 校验|mode=2触发|校验国内手机号|国外手机号关闭校验 +[login.check] +phone = true + ; UID|CSRF|令牌|(当前区域自动生成) [login.auth] uid = diff --git a/data/filter_library.json b/data/filter_library.json index b74ef81..f2215bc 100644 --- a/data/filter_library.json +++ b/data/filter_library.json @@ -77,7 +77,6 @@ "无奖品", "白名单", "我是抽奖", - "0.1", "五毛二", "一分", "一毛", @@ -342,7 +341,6 @@ "全部答对", "弹幕", "评论下方投稿视频", - "征集", "炸鱼", "黑屋", "照片", @@ -421,23 +419,19 @@ "TEST", "钓鱼", "炸鱼", - "调试" - ], - "sensitive": [ + "调试", "编曲", "作词", "半价", "打折", "机器", "禁言", - "测试", "vcf", "体验中奖", "中奖的感觉", "录歌", "混音", "一毛", - "0.1元", "1角", "0.5元", "5毛", @@ -445,7 +439,6 @@ "感脚", "曲风", "专辑封面", - "封面", "一元红包", "感jio", "名片赞", @@ -474,12 +467,9 @@ "内容自定", "音乐人一个", "私人唱歌", - "感恩", "作业", "八字", "算命", - "电台", - "情感视频", "万兴神剪手", "学习修图", "写一首歌", @@ -499,13 +489,10 @@ "定制beat", "定制logo", "惊喜软件", - "终于中奖", "加群", "第一批粉丝", - "祝大家", "内部群", "老粉", - "仅关注", "仅我关注", "打字粉丝ID", "手打粉丝ID", @@ -526,7 +513,6 @@ "专辑", "励志的话", "亲笔签名", - "up", "扫码进群", "粉丝群", "签名写真", @@ -534,11 +520,8 @@ "祝你", "红包雨", "电子书", - "我", "好友位", "豪车优惠", - "观众老爷", - "的支持", "星段位", "圣晶石", "水晶", @@ -555,21 +538,16 @@ "第一波", "第二波", "策是", - "我是抽奖", "照片", "穷", "0.5", "一角", "冥币", "加速器", - "硬币", "无奖品", "白名单", - "奖品B", - "奖品C", "五毛", "第三波", - "0.1", "五毛二", "一分", "0.52", @@ -588,7 +566,6 @@ "自拍", "日历", "0.22", - "房间抽奖", "CESHI", "奖品A", "抽奖标题", @@ -603,7 +580,6 @@ "buff", "头像", "剩的", - "中奖的", "Ziyoda", "Hilola", "beden", @@ -611,9 +587,7 @@ "采样", "音频", "海报", - "关注", "粉丝ID", - "优惠券", "微博", "互粉", "真心话", @@ -629,14 +603,11 @@ "什么都", "什么也", "这不是抽奖", - "真欧", - "很欧", "使用权", "曲谱", "啥也没有", "木有", "车载音乐", - "中奖滴", "会员歌曲", "一首歌", "必唱", @@ -644,7 +615,6 @@ "词作", "购买资格", "粉群", - "优惠", "折扣", "hoholive", "surat", diff --git a/data/latest_version.json b/data/latest_version.json index 0d51103..d964f18 100644 --- a/data/latest_version.json +++ b/data/latest_version.json @@ -5,7 +5,7 @@ "source": "https://github.com/lkeme/BiliHelper-personal", "raw_url": "https://cdn.jsdelivr.net/gh/lkeme/BiliHelper-personal@master/data/latest_version.json", "purge_url": "https://purge.jsdelivr.net/gh/lkeme/BiliHelper-personal@master/data/latest_version.json", - "version": "0.9.5.210624", + "version": "0.9.6.210625", "des": "程序有更新,请及时线上查看更新哦~", - "time": "2021年6月24日11:40:35" + "time": "2021年6月25日11:40:35" } \ No newline at end of file diff --git a/src/plugin/Dynamic.php b/src/plugin/Dynamic.php index 9cd632b..114dea5 100644 --- a/src/plugin/Dynamic.php +++ b/src/plugin/Dynamic.php @@ -9,12 +9,18 @@ namespace BiliHelper\Plugin; use BiliHelper\Core\Curl; +use BiliHelper\Core\Log; use BiliHelper\Util\FilterWords; class Dynamic { use FilterWords; + // TODO 活动订阅 + // https://www.bilibili.com/blackboard/activity-WeqT10t1ep.html + // https://api.vc.bilibili.com/topic_svr/v1/topic_svr/fetch_dynamics?topic_name=%E4%BA%92%E5%8A%A8%E6%8A%BD%E5%A5%96&sortby=2 + private static $tags = ['互动抽奖', '抽奖', '转发抽奖', '动态抽奖', '关注+转发']; + // 228584 14027 434405 7019788 3230836 private static $topic_list = [ 3230836 => '', @@ -41,12 +47,25 @@ class Dynamic $article_id = $article['desc']['dynamic_id']; // 获取 description $card = json_decode($article['card'], true); + if (array_key_exists("description", $card['item'])) { + // 主动态 + $description = $card['item']['description']; + } elseif (array_key_exists("content", $card['item'])) { + // 子动态 + // TODO 暂时跳过 需要合适的处理方法 + // description = $card['item']['content']; + continue; + } else { + // 链接到视频的动态 少数 跳过 + // print_r($card); + continue; + } $item = [ 'uid' => $article['desc']['uid'], 'rid' => $article['desc']['rid'], 'did' => $article_id, 'tm' => $article['desc']['timestamp'], - 'desc' => $card['item']['description'] + 'desc' => $description ]; // 过滤为true 就跳过 if (self::filterLayer($item)) continue; @@ -58,6 +77,7 @@ class Dynamic // more ?? // https://api.vc.bilibili.com/topic_svr/v1/topic_svr/topic_history?topic_name=转发抽奖&offset_dynamic_id=454347930068783808 } + print_r(count(self::$article_list)); return self::$article_list; } @@ -243,20 +263,24 @@ class Dynamic self::loadJsonData(); // 过滤描述 $default_words = self::$store->get("DynamicForward.default"); + $common_words = self::$store->get("Common.default"); $custom_words = empty($words = getConf('filter_words', 'dynamic')) ? [] : explode(',', $words); - $total_words = array_merge($default_words, $custom_words); + $total_words = array_merge($default_words, $custom_words, $common_words); foreach ($total_words as $word) { if (strpos($item['desc'], $word) !== false) { + Log::warning("当前动态#{$item['did']}触发关键字过滤 {$word}"); return true; } } // 过滤UID $uid_list = self::$store->get("Common.uid_list"); if (array_key_exists((int)$item['uid'], $uid_list)) { + Log::warning("当前动态#{$item['did']}触发UP黑名单过滤 {$item['uid']}"); return true; } // 过滤粉丝数量 - if (Live::getMidFollower((int)$item['uid']) < getConf('min_fans_num', 'dynamic')) { + if (($num = Live::getMidFollower((int)$item['uid'])) < getConf('min_fans_num', 'dynamic')) { + Log::warning("当前动态#{$item['did']}触发UP粉丝数量过滤 {$num}"); return true; } return false; diff --git a/src/plugin/Live.php b/src/plugin/Live.php index 2734a3a..28d7978 100644 --- a/src/plugin/Live.php +++ b/src/plugin/Live.php @@ -449,6 +449,22 @@ class Live return json_decode($raw, true); } + /** + * @use 获取用户状态 + * @param int $mid + * @return array + */ + public static function getMidStat(int $mid): array + { + $url = 'https://api.bilibili.com/x/relation/stat'; + $payload = [ + 'vmid' => $mid, + ]; + // {"code":0,"message":"0","ttl":1,"data":{"mid":50329118,"following":62,"whisper":0,"black":0,"follower":7610241}} + $raw = Curl::get('other', $url, $payload); + return json_decode($raw, true); + } + /** * @use 获取用户关注数 * @param int $mid @@ -458,7 +474,12 @@ class Live { $follower = 0; // root->data->follower - $data = self::getMidCard($mid); + if (mt_rand(0, 10) > 5) { + $data = self::getMidStat($mid); + } else { + $data = self::getMidCard($mid); + } + if (isset($data['code']) && $data['code']) { Log::warning("获取用户资料卡片失败: CODE -> {$data['code']} MSG -> {$data['message']} "); } else { diff --git a/src/plugin/Login.php b/src/plugin/Login.php index eda4367..8f2b1e5 100644 --- a/src/plugin/Login.php +++ b/src/plugin/Login.php @@ -270,7 +270,9 @@ class Login private static function smsLogin(string $mode = '短信模式') { Log::info("尝试 {$mode} 登录"); - self::checkPhone(self::$username); + if (getConf('phone', 'login.check')) { + self::checkPhone(self::$username); + } $captcha = self::sendSms(self::$username); $url = 'https://passport.bilibili.com/x/passport-login/login/sms'; $payload = [