V2EX增强插件

1.回复标记楼主ID 2.每天打开V2EX网站任意页面时自动领取签到的登陆奖励 3.回复时可@所有人 4.召唤/呼叫管理员 5.链接自动转图片

当前为 2020-10-12 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name V2EX增强插件
  3. // @description 1.回复标记楼主ID 2.每天打开V2EX网站任意页面时自动领取签到的登陆奖励 3.回复时可@所有人 4.召唤/呼叫管理员 5.链接自动转图片
  4. // @namespace yfmx746qpx8vhhmrgzt9s4cijmejj3tn
  5. // @icon http://ww1.sinaimg.cn/large/4ec98f50jw1e85azvlnh9j206y06y3ye.jpg
  6. // @author me
  7. // @include https://*.v2ex.com/*
  8. // @include https://v2ex.com/*
  9. // @version 2020.10.12
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. // 2020.10.12 首页增加全文搜索链接
  14. // 2020.10.10 解决由于改版导致的定位错误导致无法签到问题
  15. // 2019.10.25 解决Safari不能重加载新浪图片
  16. // 2019.08.01 修正帖子tag区域的链接转图片误判
  17. // 2019.05.12 新浪的图片反防盗链
  18. // 2017.05.16 由于存储数据出错,改变存储数据的方式
  19. // 2016.09.21 修复发帖页面判断用户名出错的情况
  20. // 2016.09.14 修正判断登录状态逻辑
  21. // 2016.05.25 链接自动转图片
  22. // 2016.05.21 新增召唤/呼叫管理员
  23. // 2016.05.09 Webkit内核允许修改回复框高度
  24. // 2016.04.12 在回复时可@所有人
  25. // 2015.10.16 新增在回复中标记楼主
  26. // 2015.03.22 尝试修正未知原因情况下导致的签到失败。
  27. // 2015.02.07 解决JQuery库在某种情况可能会无法载入
  28. // 2014.10.07 某种情况下会产生cookie重复赋值,增加清理补丁。
  29. // 2014.10.06 cookie信息过期时间改为3天
  30.  
  31.  
  32. //签到
  33. (function(){
  34. var load, execute, loadAndExecute;
  35. load = function(a, b, c) {
  36. var d;
  37. d = document.createElement("script"), d.setAttribute("src", a), b != null && d.addEventListener("load", b), c != null && d.addEventListener("error", c), document.body.appendChild(d);
  38. return d;
  39. }, execute = function(a) {
  40. var b, c;
  41. typeof a == "function" ? b = "(" + a + ")();" : b = a, c = document.createElement("script"), c.textContent = b, document.body.appendChild(c);
  42. return c;
  43. }, loadAndExecute = function(a, b) {
  44. return load(a, function() {
  45. return execute(b);
  46. });
  47. };
  48.  
  49. loadAndExecute("//lib.sinaapp.com/js/jquery/2.0/jquery.min.js", function() {
  50. if ( $("a[class='balance_area']").length > 0 && $("a[href='/settings']").length > 0 ) {
  51. var uid=$.find('a[href^="/member/"]')[0].innerHTML;//用户名
  52. var dateinfo=new Date().getUTCDate();//获得GMT时间今天几号
  53. var SigninInfo=uid + ":" + dateinfo + "";
  54. var daily = $('input[id="search"]');
  55. if (daily.length && localStorage.SigninInfo != SigninInfo ) {
  56. $.ajax({url:"/"});
  57. daily.val("正在检测每日签到状态...");
  58. $.ajax({
  59. url: "/mission/daily",
  60. success: function(data) {
  61. var awards = $(data).find('input[value^="领取"]');
  62. if (awards.length) {
  63. // daily.val("正在" + awards.attr("value") + "...");
  64. daily.val("正在领取今日的登录奖励......");
  65. $.ajax({
  66. url: awards.attr('onclick').match(/(?=\/).+?(?=\')/),
  67. success: function(data) {
  68. daily.val("正在提交...");
  69. var days=data.split("已连续登")[1].split(" ")[1];
  70. if ( $('a[href="/mission/daily"]').length==1 ) {$('a[href="/mission/daily"]').parent().parent().fadeOut(3000);}
  71. $.ajax({
  72. url: "/balance",
  73. success: function(data) {
  74. function p(s) {return s < 10 ? '0' + s: s;} //自动补0
  75. var date2="" + new Date().getUTCFullYear() + p(new Date().getUTCMonth()+1) +p(new Date().getUTCDate());
  76. if (data.indexOf(date2+" 的每日登录奖励")!="-1") {
  77. daily.val( "已连续领取" + days + "天,本次领到" + data.split("每日登录")[2].split(" ")[1] + "铜币" );
  78. localStorage.SigninInfo = SigninInfo;
  79. } else {
  80. daily.val( "自动领取遇到意外,你可以试试手动领。" );
  81. }
  82. }
  83. });
  84. },
  85. error: function() {
  86. daily.val("网络异常 :(");
  87. }
  88. });
  89. }else{
  90. if (data.indexOf("已领取") != -1) {
  91. daily.val("今日奖励领取过了");
  92. localStorage.SigninInfo = SigninInfo;
  93. } else {
  94. daily.val("无法辩识领奖按钮 :(");
  95. }
  96.  
  97. }
  98. },
  99. error: function() {
  100. daily.val("请手动领取今日的登录奖励!");
  101. }
  102. });
  103. } else {
  104. //console.log("");
  105. }
  106. }
  107. });
  108. })();
  109.  
  110. //标记楼主
  111. (function (){
  112. var uid=document.getElementById("Rightbar").getElementsByTagName("a")[0].href.split("/member/")[1];//自己用户名
  113. if (location.href.indexOf(".com/t/") != -1) {
  114. var lzname=document.getElementById("Main").getElementsByClassName("avatar")[0].parentNode.href.split("/member/")[1];
  115. var allname='@'+lzname+' ';
  116. var all_elem = document.getElementsByClassName("dark");
  117. for(var i=0; i<all_elem.length; i++) {
  118. if (all_elem[i].innerHTML == lzname){
  119. all_elem[i].innerHTML += " <font color=green>[楼主]</font>";
  120. }
  121. //为回复所有人做准备
  122. if ( uid != all_elem[i].innerHTML && all_elem[i].href.indexOf("/member/") != -1 && all_elem[i].innerText == all_elem[i].innerHTML && allname.indexOf('@'+all_elem[i].innerHTML+' ') == -1 ) {
  123. allname+='@'+ all_elem[i].innerHTML+' ';
  124. }
  125. }
  126. }
  127.  
  128. if ( document.getElementById("reply_content") ) {
  129. document.getElementById("reply_content").parentNode.innerHTML+="&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:;' onclick='if ( document.getElementById(\"reply_content\").value.indexOf(\""+allname+"\") == -1 ) {document.getElementById(\"reply_content\").value+=\"\\r\\n"+allname+"\"}'>@所有人</a>";
  130. if ( document.body.style.WebkitBoxShadow !== undefined ) {
  131. //允许调整回复框高度
  132. document.getElementById("reply_content").style.resize="vertical";
  133. }
  134. document.getElementById("reply_content").style.overflow="auto";
  135. var magagers="@Livid @Kai @Olivia @GordianZ @sparanoid @Girlphobia";
  136. document.getElementById("reply_content").parentNode.innerHTML+="&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:;' onclick='if ( document.getElementById(\"reply_content\").value.indexOf(\""+magagers+"\") == -1 ) {document.getElementById(\"reply_content\").value+=\"\\r\\n"+magagers+"\"}'>@管理员</a>";
  137. }
  138. })();
  139.  
  140. // 图片链接自动转换成图片 代码来自caoyue@v2ex
  141. (function (){
  142. var links = document.links;
  143. for (var i=0;i<links.length;i++){
  144. var link = links[i];
  145. if (/^http.*\.(?:jpg|jpeg|jpe|bmp|png|gif)/i.test(link.href)
  146. && !/<img\s/i.test(link.innerHTML) && link.href.indexOf("v2ex.com/tag")==-1){
  147. link.innerHTML = "<img title='" + link.href + "' src='" + link.href + "' />";
  148. }
  149. }
  150. })();
  151. //
  152.  
  153. //新浪图床的图片反防盗链
  154. (function (){
  155. var images = document.images;
  156. for (var i=0;i<images.length;i++){
  157. var image = images[i];
  158. if ( image.src && image.src.indexOf(".sinaimg.cn")!=-1 &&image.src.indexOf(".sinaimg.cn")<13 ) {
  159. image.setAttribute("referrerPolicy","no-referrer");
  160. image.src=image.src + "?";
  161. }
  162. }
  163. })();
  164. //
  165.  
  166. //
  167. if ( $('div[id="Tabs"]').length > 0 ) {
  168. document.getElementById("Tabs").innerHTML+="<a href=\"https://www.sov2ex.com/\" class=\"tab\">全文搜索</a>"
  169. }
  170.  
  171. //