Tieba Sign

贴吧签到

  1. // ==UserScript==
  2. // @name Tieba Sign
  3. // @namespace http://gera2ld.blog.163.com/
  4. // @author Gerald <gera2ld@163.com>
  5. // @icon http://cn.gravatar.com/avatar/a0ad718d86d21262ccd6ff271ece08a3?s=80
  6. // @version 1.3.4.6
  7. // @description 贴吧签到
  8. // @homepageURL http://gerald.top/code/TiebaSign
  9. // @include http://tieba.baidu.com/*
  10. // @exclude http://tieba.baidu.com/tb/*
  11. // @require https://gf.qytechs.cn/scripts/144/code.user.js
  12. // @grant none
  13. // ==/UserScript==
  14.  
  15. /*
  16. * 0: 签到成功
  17. * 1: 已签到
  18. * 2: 未开通签到
  19. * 3: 网络错误
  20. * 4: 未知错误
  21. */
  22. // 模拟WAP签到
  23. function wapSign(name, callback) {
  24. function error() {
  25. ret.err = 3;
  26. ret.msg = '网络错误';
  27. callback(ret);
  28. }
  29. var ret = {err: 4};
  30. $.get('/mo/?kw=' + encodeURIComponent(name) + '&ie=utf-8', function (d) {
  31. var s = d.match(/<(\w+) style="text-align:right;">(.*?)<\/\1>/);
  32. if (s) {
  33. if (s = s[2]) {
  34. var m = s.match(/<a href="(.*?)">签到<\/a>/);
  35. if (m)
  36. return $.get(m[1].replace(/&amp;/g, '&'), function (d) {
  37. if (m = d.match(/<span class="light">(.*?)<div/)) {
  38. ret.msg = m[1].replace(/<[^>]*>/g, '');
  39. if (/^签到成功/.test(ret.msg)) ret.err = 0;
  40. }
  41. callback(ret);
  42. }, 'html').fail(error);
  43. if (s.match(/<span >已签到<\/span>/)) {
  44. ret.err = 1;
  45. ret.msg = '已签到';
  46. }
  47. } else ret.err = 2;
  48. }
  49. callback(ret);
  50. }, 'html').fail(error);
  51. }
  52.  
  53. // 普通签到
  54. function htmlSign(n, callback) {
  55. function error() {
  56. ret.err = 3;
  57. ret.msg = '网络错误';
  58. callback(ret);
  59. }
  60. var ret = {err: 4};
  61. $.get('/f?kw=' + encodeURIComponent(n) + '&ie=utf-8', function (d) {
  62. var matches = d.match(/"is_sign_in":(\d+),"user_sign_rank":(\d+),/);
  63. if (matches && matches[1] == 1) {
  64. ret.err = 0;
  65. ret.msg = '签到成功,排名' + matches[2];
  66. } else if (matches = d.match(/PageData\.tbs = "(.*?)";/))
  67. return $.post('/sign/add', {
  68. ie: 'utf-8',
  69. kw: n,
  70. tbs: matches[1]
  71. }, function (res) {
  72. if (!res.no) {
  73. ret.err = 0;
  74. ret.msg = '签到成功,排名' + res.data.uinfo.user_sign_rank;
  75. } else ret.msg = res.no + ': ' + res.error;
  76. callback(ret);
  77. }, 'json').fail(error);
  78. callback(ret);
  79. }, 'html').fail(error);
  80. }
  81.  
  82. // 访问时自动签到
  83. function visitSign(j) {
  84. if (j.length && $('.focus_btn.cancel_focus').length) { // “喜欢”才签到
  85. if (utils.getObj('wap', true))
  86. wapSign(PageData.forum.forum_name, function (d) {
  87. if (d.err) return;
  88. j.removeClass('j_cansign signstar_btn')
  89. .addClass('signstar_signed')
  90. .html(function (i, o) {
  91. return '<span class="sign_keep_span">WAP成功</span>' + o;
  92. });
  93. $('#signstar_wrapper').addClass('signstar_wrapper_signed sign_box_bright_signed');
  94. });
  95. else $('.j_cansign').click();
  96. }
  97. }
  98.  
  99. // 从贴吧个人中心自动签到所有爱逛的贴吧
  100. function hSign(ihome) {
  101. function init() {
  102. btnSign.prop('disabled', false);
  103. btnSign.html('全部签到');
  104. }
  105. function work(){
  106. btnSign.prop('disabled', true);
  107. btnSign.html('正在签到...');
  108. idx = 0;
  109. sign();
  110. }
  111. function mark(r) {
  112. var o = $('a.unsign[data-fid=' + forums[idx].forum_id + ']');
  113. if (r.err > 1) {
  114. if (r.err == 2) {
  115. r.color = 'blue';
  116. r.msg = '未开通签到';
  117. } else {
  118. r.color = 'red';
  119. r.msg = r.msg || '未知错误';
  120. }
  121. } else {
  122. forums[idx].is_sign = 1;
  123. o.removeClass('unsign').addClass('sign');
  124. }
  125. o.prop('title', r.msg);
  126. idx ++;
  127. setTimeout(sign, 1000);
  128. }
  129. function sign() {
  130. var o;
  131. while ((o = forums[idx]) && o.is_sign) idx++;
  132. if (!o) {
  133. btnSign.html('完成签到');
  134. return setTimeout(init, 200);
  135. }
  136. btnSign.html('正在签到...' + o.forum_name);
  137. (utils.getObj('wap', true) ? wapSign : htmlSign)(o.forum_name, mark);
  138. }
  139. var forums = ihome.forumGroup._forumArr;
  140. var btnSign = $('<button class="btn-default btn-middle" style="margin-left:8px;margin-right:8px">').appendTo('.ihome_title').click(work);
  141. var idx;
  142. $('<button class="btn-default btn-middle">').appendTo('.ihome_title').click(showOptions).html('签到设置');
  143. init();
  144. }
  145.  
  146. // 设置
  147. function showOptions(e) {
  148. e.stopPropagation();
  149. utils.popup.show({
  150. html:
  151. '<h3>设置 - 百度贴吧签到脚本</h3>' +
  152. '<label><input type=checkbox id=gs_wap>模拟WAP签到</label><br>' +
  153. '<label><input type=checkbox id=gs_sign>访问已关注的贴吧时自动签到</label><br>',
  154. className: 'ge_opt',
  155. init: function (d) {
  156. utils.bindProp($(d).find('#gs_wap'), 'checked', 'wap', true);
  157. utils.bindProp($(d).find('#gs_sign'), 'checked', 'sign', true);
  158. },
  159. });
  160. }
  161.  
  162. if (PageData && PageData.user && PageData.user.is_login) {
  163. if (unsafeWindow.ihome && $('.userinfo_scores').length)
  164. hSign(unsafeWindow.ihome);
  165. else if (utils.getObj('sign', true) && !PageData.user.is_black)
  166. visitSign($('#sign_mod .j_cansign'));
  167. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址