www.v2ex.com.js

// ==UserScript==
// @name              v2ex签到
// @namespace         https://soulsign.inu1255.cn/scripts/378
// @version           1.0.1
// @author            yi-Xu-0100
// @loginURL          https://www.v2ex.com/signin
// @updateURL         https://soulsign.inu1255.cn/script/yi-Xu-0100/v2ex签到
// @expire            900000
// @domain            www.v2ex.com
// ==/UserScript==

/**
 * @file v2ex签到脚本
 * @author yi-Xu-0100
 * @author inu1255
 * @version 1.0.1
 */

/**
 * @module v2ex签到脚本
 * @description 本脚本借鉴 [inu1255 的 v2ex签到脚本](https://soulsign.inu1255.cn/scripts/1),更改了检查在线逻辑和签到检测逻辑。
 *
 * 脚本内容讨论请转至:[仓库 issue](https://github.com/yi-Xu-0100/soulsign-scripts/issues)
 *
 * 签到插件讨论请转至:[官方 issue](https://github.com/inu1255/soulsign-chrome/issues)
 * @param {string|string[]} [domain = www.v2ex.com] - 请求的域名
 * @param {string} [expire = 900000] - 在线检查频率
 * @param {string} [namespace = https://soulsign.inu1255.cn/scripts/378] - 脚本主页
 * @param {string} [loginURL = https://www.v2ex.com/signin] - 登录链接
 * @param {string} [updateURL = https://soulsign.inu1255.cn/script/yi-Xu-0100/v2ex签到] - 脚本更新链接
 */

let run = async function (param) {
  if (!(await check(param))) throw '需要登录';
  var resp = await axios.get('https://www.v2ex.com/mission/daily');
  if (/你要查看的页面需要先登录/.test(resp.data)) throw '需要登录';
  if (/每日登录奖励已领取/.test(resp.data)) return '重复签到';
  var once = /redeem\?once=(.*?)'/.exec(resp.data);
  if (!once) throw '未找到 once';
  var resp1 = await axios.get(`https://www.v2ex.com/mission/daily/redeem?once=${once[1]}`);
  if (/请重新点击一次以领取每日登录奖励/.test(resp1.data)) throw '请重新签到';
  else if (/每日登录奖励已领取/.test(resp1.data)) {
    let resp = await axios.get('https://www.v2ex.com/balance');
    let today = new Date(Date.now()).toISOString().replace(/[^0-9]/g, '');
    let reward = RegExp(`${today.slice(0, 8)} 的每日登录奖励 (\\d+) 铜币`, 'g').exec(resp.data);
    if (reward) return `签到奖励: ${reward[1]} 铜币`;
    else return '成功签到';
  } else throw '无法确认签到结果';
};

let check = async function (param) {
  var resp = await axios.get('https://www.v2ex.com/t/718092');
  return !/现在注册/.test(resp.data);
};

module.exports = { run, check };