keyjoker半自动任务(伪)

keyjoker半自动任务,修改自https://greasyfork.org/zh-CN/scripts/383411,部分操作需手动辅助

当前为 2020-07-05 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name keyjoker半自动任务(伪)
  3. // @namespace https://greasyfork.org/zh-CN/scripts/406476
  4. // @version 0.3
  5. // @description keyjoker半自动任务,修改自https://greasyfork.org/zh-CN/scripts/383411,部分操作需手动辅助
  6. // @author 祭夜
  7. // @include *://www.keyjoker.com/entries*
  8. // @include *://dashboard.hcaptcha.com/*
  9. // @include *://steamcommunity.com/profiles/*?type=keyjoker
  10. // @include *://steamcommunity.com/groups/*
  11. // @include *?type=keyjoker
  12. // @supportURL https://www.jysafe.cn/
  13. // @homepage https://www.jysafe.cn/
  14. // @run-at document-end
  15. // @grant GM_registerMenuCommand
  16. // @grant GM_addStyle
  17. // @grant GM_xmlhttpRequest
  18. // @grant GM_setClipboard
  19. // @grant GM_setValue
  20. // @grant GM_getValue
  21. // @grant GM_openInTab
  22. // @grant GM_log
  23. // @require https://greasyfork.org/scripts/379868-jquery-not/code/jQuery%20not%20$.js?version=700787
  24. // ==/UserScript==
  25.  
  26. (function() {
  27. 'use strict';
  28.  
  29. function reLoad(time,sum){
  30. let date=new Date();
  31. let hour=date.getHours();
  32. let min=date.getMinutes()<10?("0"+date.getMinutes()):date.getMinutes();
  33. if(GM_getValue("start")==1){
  34. $(".border-bottom").text(hour+":"+min+" 执行新任务检测");
  35. $.ajax({
  36. url:"/entries/load",
  37. type:"get",
  38. headers:{'x-csrf-token': $('meta[name="csrf-token"]').attr('content')},
  39. success:(data)=>{
  40. if(data && (data.actions && (data.actions.length > sum) )){
  41. console.log(data);
  42. let date=new Date();
  43. let hour=date.getHours();
  44. let min=date.getMinutes()<10?("0"+date.getMinutes()):date.getMinutes();
  45. $(".border-bottom").text(hour+":"+min+" 检测到新任务");
  46. $show({
  47. title:"keyjoker新任务",
  48. msg:"keyjoker网站更新"+(data.actions.length-sum)+"个新任务!",
  49. icon:"https://www.keyjoker.com/favicon-32x32.png",
  50. time:0,
  51. onclick:function(){
  52. location.reload(true);
  53. }
  54. });
  55. // 重载任务列表
  56. document.getElementsByClassName("row")[1].parentNode.removeChild(document.getElementsByClassName("row")[1]);
  57. $('.layout-container').append('<entries-component></entries-component>');
  58. $.getScript("/js/app.js");
  59. // 新窗口打开任务链接(免跳转)
  60. for(var i = 0; i < data.actions.length; i++)
  61. {
  62. console.log(data.actions[i]);
  63. window.open(data.actions[i].data.url + "?type=keyjoker");
  64. }
  65. }else{
  66. setTimeout(()=>{
  67. reLoad(time,sum);
  68. },time);
  69. }
  70. },
  71. error:(err)=>{
  72. window.location.reload(true);
  73. }
  74. });
  75. }
  76. }
  77. function setTime(){
  78. let time=prompt('请输入获取任务信息的时间间隔(单位:秒):');
  79. if(!isNaN(time)){
  80. GM_setValue("time",parseInt(time));
  81. }
  82. }
  83. function start(){
  84. $showTest();
  85. GM_setValue("start",1);
  86. let time=GM_getValue("time");
  87. if(!time){
  88. time=60;
  89. }
  90. if(confirm("是否以时间间隔"+time+"秒进行任务检测?")){
  91. next();
  92. }
  93. }
  94. function next(){
  95. let time=GM_getValue("time");
  96. if(!time){
  97. time=60;
  98. }
  99. let sum=$(".list-complete-item").length;
  100. if(sum>0){
  101. reLoad(time*1000,sum);
  102. }else{
  103. reLoad(time*1000,0);
  104. }
  105. }
  106. if(document.getElementsByClassName("cf-section cf-highlight cf-captcha-container").length != 0)
  107. {
  108. console.log("cf验证页面!");
  109. }else if(document.getElementById("logout-form") && location.search !== "")
  110. {
  111. location.href = location.pathname;
  112. }else
  113. {
  114. console.log("正常页面!");
  115. let isStart=setInterval(()=>{
  116. if(GM_getValue("start")==1){
  117. clearInterval(isStart);
  118. next();
  119. }
  120. },1000);
  121. }
  122. switch(location.hostname)
  123. {
  124. case "dashboard.hcaptcha.com":
  125. // hcaptcha 登录、设置Cookie
  126. {
  127. let hcaptchaClick=setInterval(()=>{
  128. console.log("hCaptcha");
  129. if(document.getElementsByTagName('button').length == 1)
  130. {
  131. if(document.getElementsByTagName('button')[0].innerText == "Login")
  132. {
  133. console.log("Login");
  134. document.getElementsByTagName('button')[0].click();
  135. }else if(document.getElementsByTagName('button')[0].innerText == "Set Cookie"){
  136. console.log("Set Cookie");
  137. document.getElementsByTagName('button')[0].click();
  138. clearInterval(hcaptchaClick);
  139. }
  140. }
  141. },1000);
  142. }
  143. break;
  144. case "store.steampowered.com":
  145. // Steam 添加愿望单
  146. document.getElementById("add_to_wishlist_area").lastElementChild.click();
  147. break;
  148. case "www.twitch.tv":
  149. // twitch关注
  150. {
  151. let twitchClick=setInterval(()=>{
  152. if(document.getElementsByClassName("follow-btn__follow-btn").length == 1)
  153. {
  154. document.getElementsByClassName("follow-btn__follow-btn")[0].getElementsByTagName("button")[0].click();
  155. clearInterval(twitchClick);
  156. }
  157. }, 1000);
  158. }
  159. break;
  160. case "steamcommunity.com":
  161. // Steam
  162. if(document.referrer == "https://www.keyjoker.com/")
  163. {
  164. // 来源keyjoker
  165. switch(location.pathname.split("/")[1])
  166. {
  167. case "groups":
  168. // 加组
  169. {
  170. let steamClick=setInterval(()=>{
  171. if(document.getElementsByClassName("grouppage_join_area").length == 1)
  172. {
  173. document.getElementsByClassName("grouppage_join_area")[0].getElementsByTagName("a")[0].click();
  174. clearInterval(steamClick);
  175. }
  176. }, 1000);
  177. }
  178. break;
  179. case "profiles":
  180. // 评论
  181. {
  182. let profileClick=setInterval(()=>{
  183. if(document.getElementsByClassName("commentthread_entry_quotebox").length == 1 && document.getElementsByClassName("commentthread_comments")[0].innerText.indexOf(document.getElementById("account_pulldown").innerText) != -1)
  184. {
  185. document.getElementsByClassName("commentthread_entry_quotebox")[0].firstElementChild.value="+rep";
  186. document.getElementsByClassName("commentthread_entry_submitlink")[0].getElementsByClassName("btn_green_white_innerfade btn_small")[0].click();
  187. clearInterval(profileClick);
  188. }
  189. }, 1000);
  190. }
  191. break;
  192. default :
  193. break;
  194. }
  195. }
  196. break;
  197. default :
  198. break;
  199. }
  200. GM_registerMenuCommand("设置时间间隔",setTime);
  201. GM_registerMenuCommand("开始检测",start);
  202. GM_registerMenuCommand("停止检测",()=>{
  203. let date=new Date();
  204. let hour=date.getHours();
  205. let min=date.getMinutes()<10?("0"+date.getMinutes()):date.getMinutes();
  206. GM_setValue("start",0);
  207. $(".border-bottom").text(hour+":"+min+" 停止执行新任务检测");
  208. });
  209. })();