Greasy Fork is available in English.
贴吧签到
- // ==UserScript==// @name Tieba Sign// @namespace http://gera2ld.blog.163.com/// @author Gerald <gera2ld@163.com>// @icon http://cn.gravatar.com/avatar/a0ad718d86d21262ccd6ff271ece08a3?s=80// @version 1.3.4.6// @description 贴吧签到// @homepageURL http://gerald.top/code/TiebaSign// @include http://tieba.baidu.com/*// @exclude http://tieba.baidu.com/tb/*// @require https://greasyfork.org/scripts/144/code.user.js// @grant none// ==/UserScript==/** 0: 签到成功* 1: 已签到* 2: 未开通签到* 3: 网络错误* 4: 未知错误*/// 模拟WAP签到function wapSign(name, callback) {function error() {ret.err = 3;ret.msg = '网络错误';callback(ret);}var ret = {err: 4};$.get('/mo/?kw=' + encodeURIComponent(name) + '&ie=utf-8', function (d) {var s = d.match(/<(\w+) style="text-align:right;">(.*?)<\/\1>/);if (s) {if (s = s[2]) {var m = s.match(/<a href="(.*?)">签到<\/a>/);if (m)return $.get(m[1].replace(/&/g, '&'), function (d) {if (m = d.match(/<span class="light">(.*?)<div/)) {ret.msg = m[1].replace(/<[^>]*>/g, '');if (/^签到成功/.test(ret.msg)) ret.err = 0;}callback(ret);}, 'html').fail(error);if (s.match(/<span >已签到<\/span>/)) {ret.err = 1;ret.msg = '已签到';}} else ret.err = 2;}callback(ret);}, 'html').fail(error);}// 普通签到function htmlSign(n, callback) {function error() {ret.err = 3;ret.msg = '网络错误';callback(ret);}var ret = {err: 4};$.get('/f?kw=' + encodeURIComponent(n) + '&ie=utf-8', function (d) {var matches = d.match(/"is_sign_in":(\d+),"user_sign_rank":(\d+),/);if (matches && matches[1] == 1) {ret.err = 0;ret.msg = '签到成功,排名' + matches[2];} else if (matches = d.match(/PageData\.tbs = "(.*?)";/))return $.post('/sign/add', {ie: 'utf-8',kw: n,tbs: matches[1]}, function (res) {if (!res.no) {ret.err = 0;ret.msg = '签到成功,排名' + res.data.uinfo.user_sign_rank;} else ret.msg = res.no + ': ' + res.error;callback(ret);}, 'json').fail(error);callback(ret);}, 'html').fail(error);}// 访问时自动签到function visitSign(j) {if (j.length && $('.focus_btn.cancel_focus').length) { // “喜欢”才签到if (utils.getObj('wap', true))wapSign(PageData.forum.forum_name, function (d) {if (d.err) return;j.removeClass('j_cansign signstar_btn').addClass('signstar_signed').html(function (i, o) {return '<span class="sign_keep_span">WAP成功</span>' + o;});$('#signstar_wrapper').addClass('signstar_wrapper_signed sign_box_bright_signed');});else $('.j_cansign').click();}}// 从贴吧个人中心自动签到所有#逛的贴吧function hSign(ihome) {function init() {btnSign.prop('disabled', false);btnSign.html('全部签到');}function work(){btnSign.prop('disabled', true);btnSign.html('正在签到...');idx = 0;sign();}function mark(r) {var o = $('a.unsign[data-fid=' + forums[idx].forum_id + ']');if (r.err > 1) {if (r.err == 2) {r.color = 'blue';r.msg = '未开通签到';} else {r.color = 'red';r.msg = r.msg || '未知错误';}} else {forums[idx].is_sign = 1;o.removeClass('unsign').addClass('sign');}o.prop('title', r.msg);idx ++;setTimeout(sign, 1000);}function sign() {var o;while ((o = forums[idx]) && o.is_sign) idx++;if (!o) {btnSign.html('完成签到');return setTimeout(init, 200);}btnSign.html('正在签到...' + o.forum_name);(utils.getObj('wap', true) ? wapSign : htmlSign)(o.forum_name, mark);}var forums = ihome.forumGroup._forumArr;var btnSign = $('<button class="btn-default btn-middle" style="margin-left:8px;margin-right:8px">').appendTo('.ihome_title').click(work);var idx;$('<button class="btn-default btn-middle">').appendTo('.ihome_title').click(showOptions).html('签到设置');init();}// 设置function showOptions(e) {e.stopPropagation();utils.popup.show({html:'<h3>设置 - 百度贴吧签到脚本</h3>' +'<label><input type=checkbox id=gs_wap>模拟WAP签到</label><br>' +'<label><input type=checkbox id=gs_sign>访问已关注的贴吧时自动签到</label><br>',className: 'ge_opt',init: function (d) {utils.bindProp($(d).find('#gs_wap'), 'checked', 'wap', true);utils.bindProp($(d).find('#gs_sign'), 'checked', 'sign', true);},});}if (PageData && PageData.user && PageData.user.is_login) {if (unsafeWindow.ihome && $('.userinfo_scores').length)hSign(unsafeWindow.ihome);else if (utils.getObj('sign', true) && !PageData.user.is_black)visitSign($('#sign_mod .j_cansign'));}