// ==UserScript==
// @name oneKeySign
// @namespace https://greasyfork.org/users/14059
// @icon http://pic.ffsky.net/images/2015/12/11/884d0d09a577cb062eb51a0c67e5a4ca.jpg
// @author setycyas
// @homepage http://blog.sina.com.cn/u/1365265583
// @description 一些论坛的自动签到脚本,目前支持网站:sstm,2djgame,acfun,lightnovel,gn00,xiami(虾米音乐),tsdm(天使动漫)
// @include https://sstmlt.net/*
// @include http://www.gn00.com/*
// @include http://www.acfun.tv/*
// @include http://www.tsdm.net/*
// @include http://www.lightnovel.cn/*
// @include https://bbs4.2djgame.net/*
// @include http://www.xiami.com/*
// @version 1
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_xmlhttpRequest
// @grant GM_registerMenuCommand
// @grant GM_xmlhttpRequest
// @run-at document-start
// @license MIT
// @downloadURL none
// ==/UserScript==
//设置每个请求的最大等待时间(毫秒)
var waitTime=60000;
//是否处于自动签到中,若进行自动签到时,所有签到网站并非都已经响应或超时,则running=1
var running=0;
/*所有需要签到的网站的资料
sType代表网站类型,目前只有simple和formhash两种.simple只要直接签到,formhash的比较复杂,要先访问主页获取formhash
webName是网站简称,必须是签到链接signURL中的字符,否则无法知道签到响应是哪个网站的
successText是网站成功签到后返回消息中包含的关键字,如果响应中有对应的字符则认为签到成功
另外留意,formhash类的网站模版中,提示签到结果等消息的div标签是
XXX签到成功XXX
的形式,
非formhash类的论坛则是*/
var webSite = [
{
sType: 'formhash',
webName:'sstmlt',
data: 'qdxq=kx',
signURL: 'https://sstmlt.net/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&sign_as=1&inajax=1',
homeURL: 'https://sstmlt.net',
successText:'签到成功'
},
{
sType: 'formhash',
webName:'gn00',
data: 'qdxq=kx&qdmode=3&todaysay=&fastreply=0',
signURL: 'http://www.gn00.com/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&sign_as=1&inajax=1',
homeURL: 'http://www.gn00.com',
successText:'签到成功'
},
{
sType: 'formhash',
webName:'tsdm',
data: 'qdxq=kx&qdmode=1&todaysay=天气真好呀开心开心&fastreply=1',
signURL: 'http://www.tsdm.net/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&inajax=1',
homeURL: 'http://www.tsdm.net/plugin.php?id=dsu_paulsign:sign',
successText:'签到成功'
},
{
sType: 'simple',
webName:'lightnovel',
signURL: 'http://www.lightnovel.cn/home.php?mod=task&do=apply&id=98',
successText:'恭喜'
},
{
sType: 'simple',
webName:'xiami',
signURL: 'http://www.xiami.com/task/signin',
successText:''
},
{
sType: 'simple',
webName:'2djgame',
signURL: 'http://bbs4.2djgame.net/home/home.php?mod=task&do=apply&id=1',
successText:'恭喜'
},
{
sType: 'simple',
webName:'acfun',
signURL: 'http://www.acfun.tv/member/checkin.aspx',
successText:'true'
}
];
//响应标志.0表示未响应,签到后只有全部标志为1才会显示签到结果列表以及允许再次签到
var resFlag=new Array();
//签到成功标志.0表示不成功
var successFlag=new Array();
//注册油猴菜单
GM_registerMenuCommand('一键签到', SimpleSign);
//一键签到命令
function SimpleSign() {
//若上次签到没有全部响应,不作新的签到
if(running>0){
alert('上次签到还未全部响应,请耐心等待');
return;
}
//读取上次签到日期
var lastSign = new Date();
var lastSignStr;
var vTemp = GM_getValue('lastSign');
if (vTemp) {
lastSign.setFullYear(vTemp.match(/(\d+)y/) [1],vTemp.match(/(\d+)m/) [1], vTemp.match(/(\d+)d/) [1]);
} else {
lastSign.setFullYear(1970, 0, 1);
}
lastSignStr = lastSign.getFullYear() + 'y' + lastSign.getMonth() + 'm' + lastSign.getDate() + 'd';
//今天的日期
var today = new Date();
var todayStr = today.getFullYear() + 'y' + today.getMonth() + 'm' + today.getDate() + 'd';
if (lastSignStr == todayStr) {
if (!confirm('今天已经运行过一键签到,一定要再运行吗?')) {
return;
}
}
//清空响应标志与成功标志
for(var i=0;i0){
successFlag[w_index]=-1;
}
//看看是否全部网站都响应完毕
CheckAndHandle();
}
//响应处理
function HandleRes(rURL,rText){
var w_index=getWebIndexFromURL(rURL);
if(w_index<0){
console.log(rURL+'没有对应资料');
return;
}
//找到响应的网站编号,记录响应状态与签到是否成功
resFlag[w_index]=1;
if(rText.indexOf(webSite[w_index].successText)>-1){
successFlag[w_index]=1;
}
//看看是否全部网站都响应完毕
CheckAndHandle();
}
//查看是否响应完毕,完毕则进行余下处理
function CheckAndHandle(){
//非运行状态,跳过
if(running<1){
return;
}
for(var i=0;i0)?'签到成功':'签到失败';
if(successFlag[i]<0){
temp='超时';
}
showTxt+=webSite[i].webName+': '+temp+'\n';
}
running=0;
GM_setValue('lastSign', lastSignStr);
alert(showTxt);
}
//从网站URL检测签到网站数组中的编号,-1表示检测失败
function getWebIndexFromURL(srcURL){
var w_index=-1;
for(var i=0;i-1){
w_index=i;
break;
}
}
return w_index;
}