temuPmPa.user.js

temuPmPa.user

This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greatest.deepsurf.us/scripts/525124/1528093/temuPmPauserjs.js

  1. // 创建面板元素
  2. let panel = $("<div>", {
  3. css: {
  4. position: "absolute",
  5. border: "1px solid #ccc",
  6. padding: "10px",
  7. backgroundColor: "#f9f9f9",
  8. top: "30%",
  9. right: "30%",
  10. zIndex: "9999",
  11. }
  12. });
  13.  
  14. // 创建复选框元素
  15. let autoRefuseCkx = $("<input>", {
  16. type: "checkbox",
  17. name: "pmpaAutoRefuse",
  18. value: "pmpaAutoRefuse"
  19. });
  20.  
  21. // 创建标签元素
  22. let label = $("<label>", {
  23. for: "pmpaAutoRefuse",
  24. text: " 自动-我不接受"
  25. });
  26.  
  27.  
  28. // 定义定时器任务队列类
  29. class TimerTaskQueue {
  30. constructor() {
  31. this.isRunning = false;
  32. }
  33.  
  34. async start() {
  35. if (this.isRunning) return;
  36. this.isRunning = true;
  37. try {
  38. while (this.isRunning) {
  39. // 第一个事件
  40. if (!await this.refuseEvt()) {
  41. break;
  42. }
  43. // 第二个事件
  44. await this.confirmEvt();
  45. // 第三个事件
  46. await this.refreshEvt();
  47. await new Promise(resolve => setTimeout(resolve, 2000));
  48.  
  49. }
  50. } catch {
  51. }
  52. }
  53.  
  54. stop() {
  55. this.isRunning = false;
  56. }
  57.  
  58. // 第一个事件:点击拒绝按钮,没有则结束任务队列
  59. refuseEvt() {
  60. return new Promise(resolve => {
  61. let isClicked = false; // 用于标记是否已经点击过包含“拒绝”的链接
  62. $('div[data-testid="beast-core-table"] a').each(function() {
  63. let linkText = $(this).text();
  64. if (linkText.includes("拒绝")) {
  65. if (!isClicked) {
  66. // 只有在还未点击过的情况下执行点击操作
  67. $(this).get(0).click();
  68. console.log("点击了拒绝按钮");
  69. isClicked = true; // 标记为已经点击过
  70. resolve(true);
  71. }
  72. }
  73. });
  74. if (!isClicked) {
  75. // 如果遍历完所有链接都没有点击过,说明未找到拒绝按钮
  76. console.log("未找到拒绝按钮,结束任务队列");
  77. resolve(false);
  78. }
  79. });
  80. }
  81.  
  82. // 第二个事件:点击拒绝按钮弹出模态框,随机 2 - 5s 点击确定按钮
  83. confirmEvt() {
  84. return new Promise(resolve => {
  85. const randomTime = getRandomNum(2, 5),
  86. customLabelTxt = "我不接受",
  87. refuseBtnTxt = "确认",
  88. cfmBtnTxt = "确认";
  89.  
  90. setTimeout(() => {
  91. // 全部拒绝
  92. $('label[data-testid="beast-core-radio"]')
  93. .filter((_, el) => $(el).text() === customLabelTxt)
  94. .click();
  95. let textareaEle = $(
  96. 'div[data-testid="beast-core-modal-body"] textarea[data-testid="beast-core-textArea-htmlInput"]:visible'
  97. );
  98. if (textareaEle.get(0)) {
  99. fillFormInput(textareaEle.get(0), getRandomLeftKeyboardChar());
  100. }
  101.  
  102. $('div[data-testid="beast-core-modal"] button')
  103. .filter((_, el) => $(el).text() === cfmBtnTxt ||$(el).text() === refuseBtnTxt)
  104. .click();
  105.  
  106.  
  107. console.log(`等待 ${randomTime} 秒后点击了确定按钮`);
  108.  
  109. resolve();
  110. }, randomTime * 1000);
  111. });
  112. }
  113.  
  114. // 第三个事件:随机等待 5 - 10s 点击刷新按钮
  115. refreshEvt() {
  116. return new Promise(resolve => {
  117. const randomTime = getRandomNum(5, 10);
  118. const sbtBtnTxt = "查询";
  119. setTimeout(() => {
  120. console.log(`等待 ${randomTime} 秒后点击了${sbtBtnTxt}按钮`);
  121.  
  122. $('form div[data-testid="beast-core-grid-row"] button')
  123. .filter((_, el) => $(el).text() === sbtBtnTxt)
  124. .click();
  125.  
  126. resolve();
  127. }, randomTime * 1000);
  128. });
  129. }
  130. }
  131.  
  132. const taskQueue = new TimerTaskQueue();
  133.  
  134. autoRefuseCkx.on("change", function() {
  135. if (this.checked) {
  136. // GM_setValue("pmpaAutoRefuse", "y");
  137. // 这里可以添加复选框选中时要执行的其他操作
  138. taskQueue.start();
  139. } else {
  140. // GM_setValue("pmpaAutoRefuse", "n");
  141. // 这里可以添加复选框取消选中时要执行的其他操作
  142. taskQueue.stop();
  143. }
  144. });
  145.  
  146. // 将复选框和标签添加到面板中
  147. panel.append(autoRefuseCkx).append(label);
  148.  
  149. // 将面板添加到页面的 body 中
  150. $("body").append(panel);
  151.