()
| 192 | } |
| 193 | |
| 194 | function BahamutGuildSign() { //巴哈姆特查询公会列表 |
| 195 | if ($.needSignGuild === false || $.needSignGuild === 'false') { //如果用户选择不签到公会 |
| 196 | return; //退出公会签到函数 |
| 197 | } |
| 198 | return $.http.get({ //使用get请求查询公会列表 (Promise实例对象) |
| 199 | url: 'https://api.gamer.com.tw/ajax/common/topBar.php?type=forum', // 查询公会列表接口 |
| 200 | headers: {} //请求头, 客户端将自动设置Cookie字段 |
| 201 | }) |
| 202 | .then(async (resp) => { //网络请求成功的处理, 实例函数带有async关键字, 表示里面有异步操作 |
| 203 | const list = (resp.body.replace(/\n/g, '').match(/guild\.php\?g?sn=\d.+?<\/p>/g) || []) //正则过滤公会列表大致内容 |
| 204 | .map(n => { //使用map遍历每个大致内容 |
| 205 | return { //返回包含公会ID和公会名称的对象 |
| 206 | sn: n.split(/guild\.php\?g?sn=(\d+)/)[1], //正则进一步提取公会ID |
| 207 | name: n.split(/<p>(.+?)<\/p>/)[1] //正则进一步提取公会名称 |
| 208 | } |
| 209 | }); |
| 210 | if (list.length) { //过滤后, 如果包含公会列表 |
| 211 | $.log('', `✅获取公会列表成功`); //打印日志 |
| 212 | //按照公会数量进行并发签到, map结合Promise.all后可以实现并发签到并且都完成后才进行下一行操作 |
| 213 | const sign = await Promise.all(list.map(StartSignGuild)); |
| 214 | const sucs = sign.filter(n => n === 1).length; //过滤后得到成功数量 |
| 215 | const fail = sign.filter(n => n === 0).length; //过滤后得到失败数量 |
| 216 | //添加到全局变量备用 (通知) |
| 217 | $.notifyMsg.push(`公会签到: ${sucs?`成功${sucs}个`:``}${sucs&&fail?`, `:``}${fail?`失败${fail}个`:``}`); |
| 218 | } else { |
| 219 | throw new Error('公会列表为空'); //无公会列表则抛出异常 |
| 220 | } |
| 221 | }) |
| 222 | .catch(err => { //捕获异常, 打印日志 |
| 223 | $.notifyMsg.push(`公会签到: ${err.message || err}`); //添加到全局变量备用 (通知) |
| 224 | $.log('', `❌巴哈姆特公会签到失败`, `❌${err.message || err}`); //打印日志 |
| 225 | }); |
| 226 | } |
| 227 | |
| 228 | function StartSignGuild(v) { //巴哈姆特公会签到 |
| 229 |
no test coverage detected