// ==UserScript==
// @name 通用_自动签到
// @name:zh-CN 通用_自动签到
// @name:en-US Uni_Auto sign
// @description 自动或半自动地签到。
// @version 3.0.0
// @author LiuliPack
// @license WTFPL
// @namespace https://gitlab.com/LiuliPack/UserScript
// @match *://*/*
// @supportURL https://gitlab.com/liulipack/UserScript
// @grant GM_registerMenuCommand
// @run-at document-idle
// ==/UserScript==
/* 参数示范 / Config demo
{
"remark": "备注",
"url": "网址",
"check": {
"mode": ["0:元素属性", "1:元素文本", "2:元素存在"],
"element": "元素选择器",
"data": ["元素文本或元素属性键", "元素属性值"]
},
"sign": [
{
"remark": "备注",
"data": "元素选择器",
"data": () => { // 自定义脚本 },
"delay": "0",
"last": ["false:不是最后一步", "true:是最后一步"]
}
],
"refresh": "刷新页面",
"close": "关闭页面"
},
{
"remark": "Remarks",
"url": "URL",
"check": {
"mode": ["0:Element Properties", "1:Element Text", "2:Element Existence"],
"element": "Element Selector",
"data": ["Element text or element attribute key", "Element attribute value"]
},
"sign": [
{
"remark": "Remarks",
"data": "Element Selector",
"data": () => { // Custom Script },
"delay": "0",
"last": ["false: Not the last step", "true: Is the last step"]
}
],
"refresh": "Refresh page",
"close": "Close page"
}
*/
'use strict';
// 定义参数(config)和网页链接(URL)变量;快捷元素选择($('元素'))和关闭页面(close())函数。
let config = [
{
"remark": "Anime 字幕论坛_签到插件",
"url": "https://bbs.acgrip.com/dsu_paulsign-sign.html",
"check": {
"mode": 2,
"element": "#shuai_menu + table .tac a"
},
"sign": [
{
"remark": "选择心情",
"data": "#yl",
"delay": 0,
"last": false
},
{
"remark": "勾选不填写留言",
"data": "#qiandao > table.tfm > tbody > tr:nth-child(1) > td > label:nth-child(3) > input[type=radio]",
"delay": 0,
"last": false
},
{
"remark": "执行签到",
"data": "#shuai_menu + table .tac a",
"delay": 0,
"last": true
}
],
"refresh": false,
"close": true
},
{
"remark": "Anime 字幕论坛_Discuz 任务",
"url": "https://bbs.acgrip.com/home.php?mod=task",
"check": {
"mode": 2,
"element": "#ct a[href='home.php?mod=task&do=apply&id=1']",
},
"sign": [
{
"remark": "执行签到",
"data": "#ct a[href='home.php?mod=task&do=apply&id=1']",
"delay": 0,
"last": true
}
],
"refresh": false,
"close": true
},
{
"remark": "2DFun",
"url": "https://2dfan.com/",
"check": {
"mode": 2,
"element": "#do_checkin"
},
"sign": [
{
"remark": "执行签到",
"data": "#do_checkin",
"delay": 0,
"last": true
}
],
"refresh": true,
"close": true
},
{
"remark": "南+_接任务",
"url": "https://www.south-plus.net/plugin.php?H_name-tasks.html.html",
"check": {
"mode": 0,
"element": "#p_15 a",
"data": ["title", "按这申请此任务"]
},
"sign": [
{
"remark": "接每日任务",
"data": "#p_15 a",
"delay": "0",
"last": false
},
{
"remark": "接每周任务",
"data": "#p_14 a",
"delay": "0",
"last": false
},
{
"remark": "前往完成任务页面",
"data": () => { window.open('https://www.south-plus.net/plugin.php?H_name-tasks-actions-newtasks.html.html', "_self") },
"delay": 3,
"last": true
}
],
"refresh": false,
"close": true
},
{
"remark": "南+_完成任务",
"url": "https://www.south-plus.net/plugin.php?H_name-tasks-actions-newtasks.html.html",
"check": {
"mode": 0,
"element": "#both_15 a",
"data": ["title", "领取此奖励"]
},
"sign": [
{
"remark": "完成每日任务",
"data": "#both_15 a",
"delay": "0",
"last": false
},
{
"remark": "完成每周任务",
"data": "#both_14 a",
"delay": "0",
"last": true
}
],
"refresh": false,
"close": true
},
{
"remark": "绯月",
"url": "https://bbs.kfpromax.com/kf_growup.php",
"check": {
"mode": 2,
"element": ".gro_divhui:nth-child(5) + div a:not(a[href=\"javascript:;\"])"
},
"sign": [
{
"remark": "执行签到",
"data": ".gro_divhui:nth-child(5) + div a:not(a[href=\"javascript:;\"])",
"delay": 0,
"last": true
}
],
"refresh": false,
"close": true
},
{
"remark": "绅士仓库",
"url": "https://cangku.moe/",
"check": {
"mode": 1,
"element": ".footer li:nth-child(2) a",
"data": ["签到"]
},
"sign": [
{
"remark": "执行签到",
"data": ".footer li:nth-child(2) a",
"delay": 0,
"last": true
}
],
"refresh": false,
"close": false
},
{
"remark": "紳士の庭",
"url": "https://gmgard.moe/",
"check": {
"mode": 1,
"element": "#checkw",
"data": ["点此签到"]
},
"sign": [
{
"remark": "执行签到",
"data": "#checkin",
"delay": 0,
"last": true
}
],
"refresh": false,
"close": false
}
],
URL = location.href,
$ = ele => document.querySelector(ele);
function close() {
window.close();
};
// 等待 5 秒
setTimeout(() => {
// 遍历配置信息
config.forEach(data => {
// 如果链接匹配且未签到
if(URL === data.url && data.check.mode === 0 && $(data.check.element)?.getAttribute(data.check.data[0]) === data.check.data[1] ||
URL === data.url && data.check.mode === 1 && $(data.check.element)?.textContent === data.check.data[0] ||
URL === data.url && data.check.mode === 2 && $(data.check.element)) {
// 执行签到
data.sign.forEach(data => {
// 等待延时
setTimeout(() => {
// 判断模式并执行对应操作
typeof data.data === "string" ? $(data.data)?.click() : data.data() ;
// 如果是最后一步
if(data.last) {
// 根据参数刷新和关闭
data.refresh ? location.reload() : 0 ;
setTimeout(() => { data.close ? close() : 0 ; }, 500);
}
}, data.delay * 1000);
});
}else if(URL === data.url) {
// 根据参数刷新和关闭
data.refresh ? location.reload() : 0 ;
setTimeout(() => { data.close ? close() : 0 ; }, 500);
}
});
}, 5000);