GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 823|回复: 81
收起左侧

[心得] 菜单版—回帖检测脚本

    [复制链接] |关注本帖

GM活动员

Level 0

『居住证: Lv2~6』『伊黎丝的祝福』纯真护剑『随时随地开启!』镜中小鸟『随时随地开启!』幽灵竹筒和你一起飞行的皮卡丘夏日柯基幸福的小阿尔

在此基础上,主要加了菜单,方便修改设置
我原本是想如果浏览器打开了“提醒”网页,就不自动关闭和自动跳转,方便回复别人的,但是那样脚本就太慢了

搞了两种菜单的显示形式
第一种:显示在网页右下角
能实时更新

第二种:在油猴的菜单里
因为油猴选项需要刷新网页才能更新,所以我改成了点击之后新建一个
例如:
(当然,刷新之后又会正常显示三个选项)
嗯,第一种方便一点,第二张美观一点?
需要点击设置,修改成自己的uid
需要点击设置,修改成自己的uid
需要点击设置,修改成自己的uid

第一种
//@Name
  1. // ==UserScript==
  2. // @name:zh-CN      我水贴了吗
  3. // @name            Am_I_+2?
  4. // @include         https://www.gamemale.com/*
  5. // ==/UserScript==

  6. (async () => {
  7.   "use strict";

  8.   let userId = 679483; // 你的用户 ID
  9.   let autoCloseReplied = true; // 已回帖的网站是否自动关闭
  10.   let autoJumpForum = true; // 是否自动跳转到帖子第一页
  11.   let autoCloseDelay = 10; // 自动关闭页面的延迟时间,单位为毫秒

  12.   const menuAll = `
  13.     <div id="am-i-plus2-menu" style="position: fixed; bottom: 10px; right: 10px; z-index: 999;">
  14.       <div>
  15.         <span>自动关闭:</span>
  16.         <span id="auto-close">${autoCloseReplied ? "✅" : "❌"}</span>
  17.       </div>
  18.       <div>
  19.         <span>自动跳转:</span>
  20.         <span id="auto-jump">${autoJumpForum ? "✅" : "❌"}</span>
  21.       </div>
  22.       <div>
  23.         <span id="settings-btn"><i class="fas fa-cog"></i>设置#️⃣</span>
  24.       </div>
  25.     </div>
  26.   `;

  27.   const setSettings = () => {
  28.     const savedSettings = localStorage.getItem("am-i-plus2-settings");
  29.     let savedUserId = userId;
  30.     let savedAutoCloseDelay = autoCloseDelay;
  31.     if (savedSettings) {
  32.       const { userId: savedUserIdFromStorage, autoCloseDelay: savedAutoCloseDelayFromStorage } = JSON.parse(savedSettings);
  33.       savedUserId = savedUserIdFromStorage;
  34.       savedAutoCloseDelay = savedAutoCloseDelayFromStorage;
  35.     }
  36.     const userIdInput = prompt("请输入用户ID", savedUserId);
  37.     if (userIdInput !== null) {
  38.       userId = Number(userIdInput);
  39.     }
  40.     const autoCloseDelayInput = prompt("请输入自动关闭时间(毫秒)", savedAutoCloseDelay);
  41.     if (autoCloseDelayInput !== null) {
  42.       autoCloseDelay = Number(autoCloseDelayInput);
  43.     }
  44.     localStorage.setItem("am-i-plus2-settings", JSON.stringify({ userId, autoCloseReplied, autoJumpForum, autoCloseDelay }));
  45.   };

  46.   const setAutoClose = () => {
  47.     autoCloseReplied = !autoCloseReplied;
  48.     autoCloseBtn.textContent = autoCloseReplied ? "✅" : "❌";
  49.     localStorage.setItem("am-i-plus2-settings", JSON.stringify({ userId, autoCloseReplied, autoJumpForum, autoCloseDelay }));
  50.   };

  51.   const setAutoJump = () => {
  52.     autoJumpForum = !autoJumpForum;
  53.     autoJumpBtn.textContent = autoJumpForum ? "✅" : "❌";
  54.     localStorage.setItem("am-i-plus2-settings", JSON.stringify({ userId, autoCloseReplied, autoJumpForum, autoCloseDelay }));
  55.   };

  56.   document.body.insertAdjacentHTML("beforeend", menuAll);

  57.   const autoCloseBtn = document.querySelector("#auto-close");
  58.   const autoJumpBtn = document.querySelector("#auto-jump");
  59.   const settingsBtn = document.querySelector("#settings-btn");

  60.   autoCloseBtn.addEventListener("click", setAutoClose);

  61.   autoJumpBtn.addEventListener("click", setAutoJump);

  62.   settingsBtn.addEventListener("click", setSettings);

  63.   const savedSettings = localStorage.getItem("am-i-plus2-settings");
  64.   if (savedSettings) {
  65.     const { userId: savedUserId, autoCloseReplied: savedAutoCloseReplied, autoJumpForum: savedAutoJumpForum, autoCloseDelay: savedAutoCloseDelay } = JSON.parse(savedSettings);
  66.     userId = savedUserId;
  67.     autoCloseReplied = savedAutoCloseReplied;
  68.     autoJumpForum = savedAutoJumpForum;
  69.     autoCloseDelay = savedAutoCloseDelay;
  70.     autoCloseBtn.textContent = autoCloseReplied ? "✅" : "❌";
  71.     autoJumpBtn.textContent = autoJumpForum ? "✅" : "❌";
  72.   }

  73.   const isDiscuz = typeof discuz_uid !== "undefined";
  74.   let testUrl = location.href;

  75.   if (/^https:\/\/www\.gamemale\.com\/forum\.php\?mod=viewthread&tid=\d+/.test(testUrl)) {
  76.     const tid = testUrl.match(/tid=(\d+)/)[1];
  77.     testUrl = `https://www.gamemale.com/thread-${tid}-1-1.html`;
  78.   }

  79.   try {
  80.     const res = await fetch(`https://www.gamemale.com/forum.php?mod=viewthread&tid=${tid}&page=1&authorid=${userId}`);
  81.     const html = await res.text();
  82.     const replied = html.includes("发表于");

  83.     if (replied) {
  84.       if (autoCloseReplied) {
  85.         setTimeout(() => {
  86.           window.close();
  87.         }, autoCloseDelay);
  88.       }
  89.     }

  90.     if (isDiscuz) {
  91.       const btnArea = document.querySelector("#postlist td.plc div.authi>span.none") ?? document.querySelector("#postlist td.plc div.authi>span.pipe");
  92.       const tips = document.createElement("a");
  93.       tips.textContent = replied ? "✅已回帖" : "❌没回贴";
  94.       tips.style.marginLeft = "10px";
  95.       tips.style.color = replied ? "green" : "red";
  96.       btnArea.insertBefore(tips, btnArea.lastElementChild);
  97.     } else {
  98.       const btnArea = document.querySelector("#postlist > div:first-child .authi");
  99.       const tips = document.createElement("span");
  100.       tips.textContent = replied ? "✅已回帖" : "❌没回贴";
  101.       tips.style.marginLeft = "10px";
  102.       tips.style.color = replied ? "green" : "red";
  103.       btnArea.appendChild(tips);
  104.     }

  105.     if (autoJumpForum && !replied) {
  106.       const topUrl = `https://www.gamemale.com/thread-${tid}-1-1.html#top`;
  107.       location.href = topUrl;
  108.     }
  109.   } catch (error) {
  110.     console.error(error);
  111.   }
  112. })();
复制代码

第二种
//@Name
  1. // ==UserScript==
  2. // @name            Am_I_+2
  3. // @name:zh-CN      我水贴了吗 ?
  4. // @include         https://www.gamemale.com/*
  5. // @grant           GM_registerMenuCommand
  6. // @grant           GM_setValue
  7. // @grant           GM_getValue
  8. // ==/UserScript==

  9. (async () => {
  10.   "use strict";

  11.   const userId = GM_getValue("userid", 679483); // 你的用户 ID
  12.   const autoCloseReplied = GM_getValue("autoClose", true); // 已回帖的网站是否自动关闭
  13.   const autoJumpForum = GM_getValue("autoJump", true); // 是否自动跳转到帖子第一页
  14.   const autoCloseDelay = GM_getValue("autoCloseDelay", 10); // 自动关闭页面的延迟时间,单位为毫秒

  15.   const setSettings = () => {
  16.     const savedUserId = GM_getValue("userid", userId);
  17.     const savedAutoCloseDelay = GM_getValue("autoCloseDelay", autoCloseDelay);
  18.     const userIdInput = prompt("请输入用户ID", savedUserId);
  19.     if (userIdInput !== null) {
  20.       GM_setValue("userid", Number(userIdInput));
  21.     }
  22.     const autoCloseDelayInput = prompt("请输入自动关闭时间(毫秒)", savedAutoCloseDelay);
  23.     if (autoCloseDelayInput !== null) {
  24.       GM_setValue("autoCloseDelay", Number(autoCloseDelayInput));
  25.     }
  26.   };

  27.   const setAutoClose = () => {
  28.     const newAutoCloseReplied = !autoCloseReplied;
  29.     GM_setValue("autoClose", newAutoCloseReplied);
  30.     const icon = newAutoCloseReplied ? "✅" : "❌";
  31.     const menuText = `自动关闭:${icon} ${newAutoCloseReplied ? "已开启" : "已关闭"}`;
  32.     GM_registerMenuCommand(menuText, setAutoClose);
  33.     const tips = document.querySelector("#autoCloseTips");
  34.     tips.textContent = `${icon} ${newAutoCloseReplied ? "已开启" : "已关闭"}`;
  35.   };

  36.   const setAutoJump = () => {
  37.     const newAutoJumpForum = !autoJumpForum;
  38.     GM_setValue("autoJump", newAutoJumpForum);
  39.     const icon = newAutoJumpForum ? "✅" : "❌";
  40.     const menuText = `自动跳转:${icon} ${newAutoJumpForum ? "已开启" : "已关闭"}`;
  41.     GM_registerMenuCommand(menuText, setAutoJump);
  42.     const tips = document.querySelector("#autoJumpTips");
  43.     tips.textContent = `${icon} ${newAutoJumpForum ? "已开启" : "已关闭"}`;
  44.   };

  45.   const autoCloseIcon = autoCloseReplied ? "✅" : "❌";
  46.   const autoCloseColor = autoCloseReplied ? "green" : "red";
  47.   GM_registerMenuCommand(`自动关闭:${autoCloseIcon} ${autoCloseReplied ? "已开启" : "已关闭"}`, setAutoClose);

  48.   const autoJumpIcon = autoJumpForum ? "✅" : "❌";
  49.   const autoJumpColor = autoJumpForum ? "green" : "red";
  50.   GM_registerMenuCommand(`自动跳转:${autoJumpIcon} ${autoJumpForum ? "已开启" : "已关闭"}`, setAutoJump);

  51.   GM_registerMenuCommand("设置", setSettings);

  52.   const isDiscuz = typeof discuz_uid !== "undefined";
  53.   let testUrl = location.href;

  54.   if (/^https:\/\/www\.gamemale\.com\/forum\.php\?mod=viewthread&tid=\d+/.test(testUrl)) {
  55.     const tid = testUrl.match(/tid=(\d+)/)[1];
  56.     testUrl = `https://www.gamemale.com/thread-${tid}-1-1.html`;
  57.   }

  58.   try {
  59.     const res = await fetch(`https://www.gamemale.com/forum.php?mod=viewthread&tid=${tid}&page=1&authorid=${userId}`);
  60.     const html = await res.text();
  61.     const replied = html.includes("发表于");

  62.     if (replied && autoCloseReplied) {
  63.       setTimeout(() => {
  64.         window.close();
  65.       }, autoCloseDelay);
  66.     }

  67.     const btnArea = isDiscuz ? document.querySelector("#postlist td.plc div.authi>span.none") ?? document.querySelector("#postlist td.plc div.authi>span.pipe") : document.querySelector("#postlist > div:first-child .authi");
  68.     const tips = document.createElement(isDiscuz ? "a" : "span");
  69.     tips.textContent = `${replied ? "✅" : "❌"} ${replied ? "已回帖" : "未回帖"}`;
  70.     tips.style.marginLeft = "10px";
  71.     tips.style.color = replied ? "green" : "red";
  72.     btnArea.appendChild(tips);

  73.     if (!replied && autoJumpForum) {
  74.       const topUrl = `https://www.gamemale.com/thread-${tid}-1-1.html#top`;
  75.       location.href = topUrl;
  76.     }

  77.     const autoCloseTips = document.createElement("span");
  78.     autoCloseTips.id = "autoCloseTips";
  79.     autoCloseTips.textContent = `${autoCloseIcon} ${autoCloseReplied ? "已开启" : "已关闭"}`;
  80.     autoCloseTips.style.marginLeft = "10px";
  81.     autoCloseTips.style.color = autoCloseColor;
  82.     btnArea.appendChild(autoCloseTips);

  83.     const autoJumpTips = document.createElement("span");
  84.     autoJumpTips.id = "autoJumpTips";
  85.     autoJumpTips.textContent = `${autoJumpIcon} ${autoJumpForum ? "已开启" : "已关闭"}`;
  86.     autoJumpTips.style.marginLeft = "10px";
  87.     autoJumpTips.style.color = autoJumpColor;
  88.     btnArea.appendChild(autoJumpTips);
  89.   } catch (error) {
  90.     console.error(error);
  91.   }
  92. })();
复制代码

我的其他脚本:
GM简化
引鸡

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

参与人数 29旅程 +1 金币 +10 血液 +63 追随 +28 知识 +1 堕落 +10 收起 理由
Tatta + 3 + 1
alexk + 1 赞一个!
狗四月 + 2 + 1 很给力!
WintercaT + 1 很给力!
davidhigrid + 1
cc簗橗 + 6 + 1 神马都是浮云
ga2006024244 + 1 + 1 很给力!
犬傑犬 + 1 + 1
sonyboy049 + 3 + 1 很给力!
CleinMass + 1

查看全部评分

回复

使用道具 举报

Level 0

『伊黎丝的祝福』蒂法·洛克哈特纯真护剑甘道夫·先圣仁心『星象监测』金钱马车卡洛斯·奥利维拉月光骑士丹·雷诺斯

回复

使用道具 举报

Level 0

思绪骤聚『伊黎丝的祝福』纯真护剑『住在GM村』镜中小鸟『随时随地开启!』不灭的蓝宝石『随时随地开启!』超级名贵无用宝剑

回复

使用道具 举报

Level 0

夏之歌超人鬼王酒吞童子『随时随地开启!』GHOST『随时随地开启!』阿尔萨斯‧米奈希尔皮尔斯‧尼凡斯锻造卷轴压箱底的泡面

本帖最后由 一只随行 于 2023-5-25 13:08 编辑

回帖检测也进一步优化了,可惜水漫金山的时代已经过去哩
就是,有没有可能,过滤掉自己发的帖子呢,不然回复下别人还要关掉自动关闭功能
  收起(2)
回复

使用道具 举报

Level 8

『樱花树灵』『伊黎丝的祝福』星光彩虹小粉驼镜中小鸟亚当‧简森辗转最终幻想XIV普隆普特·阿金塔姆赛博朋克2077夏之歌

回复

使用道具 举报

Level 0

金钱马车诡案谜集·黑夜之星

吼~手机也行的欸~但咱还以为是右下角能显示是否回帖的呢~
对了,请问能优化脚本吗~有时打开后加载好一会才会显示的,咱现在一般都关了的(´×ω×`)
回复

使用道具 举报

Level 0

『伊黎丝的祝福』『随时随地开启!』纯真护剑『随时随地开启!』鬼王酒吞童子普隆普特·阿金塔姆Dante骑兽之子达拉然最终幻想XIV

回复

使用道具 举报

Level 0

『 弗霖的琴』至死不渝男巫之歌岛田源氏岛田半藏泰比里厄斯士兵 76Joker霍格沃兹魔法学校魔法不朽·传奇不熄

回复

使用道具 举报

菊花发芽了抖来抖去小草『伊黎丝的祝福』伪造的红石『随时随地开启!』普隆普特·阿金塔姆镜中小鸟猩红魔鹫巴尔弗雷亚

回复

使用道具 举报

吸血魔蝠一只普通的鳄鱼捡到了肥皂『伊黎丝的祝福』『住在GM村』亚瑟‧摩根钢铁侠魔法不朽·传奇不熄超级名贵无用宝剑卡利亚权杖

回复

使用道具 举报

躁动的书籍神圣十字章和你一起飞行的皮卡丘章鱼小丸子缘起星空霍格沃兹特快列车海螺号角黄金树的恩惠双贤辉石头罩美恐:新的开始

回复

使用道具 举报

Chris Mazdzer阿拉贡·亡魂之约安德森‧戴维斯冒险专用绳索卡斯迪奥岛田半藏神灯玄生万物奥兹大陆卡利亚权杖

回复

使用道具 举报

纯真护剑我的冶金打火机赫敏·格兰杰风暴磁场之鳄诺克提斯·路西斯·伽拉姆诡案谜集·黑夜之星至死不渝岛田半藏亚索时间变异管理局

回复

使用道具 举报

不灭狂雷双重身份贝优妮塔赫敏·格兰杰威克多尔·克鲁姆至死不渝魔法不朽·传奇不熄泰比里厄斯卡洛斯·奥利维拉

回复

使用道具 举报

『叫价牌』『交钥匙了!』特殊-家园卫士Ⓛ生金蛋的鹅特殊-家园卫士Ⓡ霍格沃兹特快列车『星象监测』最终幻想XIV超级名贵无用宝剑装饰触手Ⓛ

回复

使用道具 举报

思绪骤聚荒野大镖客:救赎 II神秘商店贵宾卡石肤术收到情书变骚喷雾捡到了肥皂千杯不醉灵光补脑剂雷文克劳

回复

使用道具 举报

钢铁侠『随时随地开启!』『伊黎丝的祝福』荒野大镖客:救赎 II诡案谜集·黑夜之星镜中小鸟最终幻想XIV龙腾世纪:审判达拉然 迷之香蕉特饮

回复

使用道具 举报

神奇四叶草 迷之香蕉特饮和你一起飞行的皮卡丘蓝礼·重生鹿三风雪之家塞巴斯蒂安·斯坦我的冶金打火机双向圣杯:焕然意志One Ring赛博朋克2077

PUCK 发表于 2023-5-25 14:46:48 | 显示全部楼层 |取消关注该作者的回复
回复

使用道具 举报

内森·德雷克『矩阵谜钥Ⓖ』炙热的格拉迪欧拉斯果体76『召唤好运的角笛』性感男神GM裸体克里斯『私有海域』诺曼底号

abba 发表于 2023-5-25 14:53:45 | 显示全部楼层 |取消关注该作者的回复
回复

使用道具 举报

勋章空位插槽『伊黎丝的祝福』124x43 隐形➀124x43 隐形➁Joker骑兽之子达拉然铁牛安德鲁·库珀『随时随地开启!』

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|GameMale

GMT+8, 2023-6-8 02:29 , Processed in 0.108371 second(s), 149 queries , Redis On.

Copyright © 2013-2023 GameMale

All Rights Reserved.

快速回复 返回列表