GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 5103|回复: 87
收起左侧

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

    [复制链接] |关注本帖

GM活动员

Lvl. 0

『住在GM村』『正在入住GM村』征服之王被释放的灵魂死灵之书圣甲虫秘典破损的旧书吃饱金币的Doge生金蛋的鹅内森·德雷克

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

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

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

    评分

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

    查看全部评分

    回复

    使用道具 举报

    GM活动员

    百相千面-晦永远的克叔業火死鬥实现梦想官复原职虚空之海的鲸Zootopia幸运女神的微笑『逆境中的幸运女神』御医神兔

      回复

      使用道具 举报

      组件大师

      『户口本: Lv7+』凯登‧阿兰科Forever Titanic贵族与野兽一国之主

        回复

        使用道具 举报

        Lvl. 0

        性感男神GM卡洛斯·奥利维拉幽浮起司煲压箱底的泡面图腾饼干『酒馆蛋煲』车厢特供 · 热巧 450ml『南瓜拿铁』男巫之歌虚空之海的鲸

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

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

          使用道具 举报

          Lvl. 9

          『住在GM村』史莱哲林神秘商店贵宾卡萨赫的蛋糕收到情书脉律辐石劫掠核芯史莱姆牧场亚瑟‧摩根

            回复

            使用道具 举报

            GM活动员

            Lvl. 0

            我的天使GM吸血伯爵吃饱金币的Doge阿拉喵?神灯和你一起飞行的皮卡丘小小舞台永浴爱河

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

              使用道具 举报

              Lvl. 10 max

              诺曼底号性感男神GMForever Titanic魔法不朽·传奇不熄業火死鬥诺克提斯·路西斯·伽拉姆克莱夫・罗兹菲尔德岛田源氏巴哈姆特『终点站:极地』

                回复

                使用道具 举报

                Lvl. 0

                GM活动员

                小小舞台『 弗霖的琴』虚空之海的鲸業火死鬥男巫之歌泰比里厄斯【夏日限定】夏日的泰凯斯史莱姆牧场崩朽之青铜龙王岛田源氏

                  回复

                  使用道具 举报

                  脉律辐石劫掠核芯御医神兔夏日柯基幽灵竹筒黄金树的恩惠探险三杰士图腾饼干生活拍立得璀璨金币

                    回复

                    使用道具 举报

                    诺克提斯·路西斯·伽拉姆Forever Titanic業火死鬥钢铁侠永远的克叔极·龙の意死灵之书卡利亚权杖虚空之海的鲸史莱姆牧场

                      回复

                      使用道具 举报

                      『住在GM村』格拉迪欧拉斯雪王的心脏『星河碎片』『灰域来音』预知水晶球炽天使之拥『伊黎丝的赞词』纯真护剑『随时随地开启!』

                        回复

                        使用道具 举报

                        人鱼之泪奇思妙想秘密森林的漂流瓶风物长宜冒险专用绳索Futūrum(未来)卡斯迪奥安德森‧戴维斯火柴 - 果体美男子

                          回复

                          使用道具 举报

                          黄金树的恩惠夜魔护符享受美食的小伯孤注一掷风暴磁场之鳄『随时随地开启!』雪王的心脏『随时随地开启!』人鱼之泪

                            回复

                            使用道具 举报

                            实现梦想業火死鬥魔法不朽·传奇不熄卡洛斯·奥利维拉白野威十年一梦官复原职男巫之歌永浴爱河虚空之海的鲸

                              回复

                              使用道具 举报

                              装饰触手Ⓛ猫化弩哥装饰触手Ⓡ风物长宜特殊-家园卫士Ⓛ生金蛋的鹅特殊-家园卫士Ⓡ最终幻想XIV奇思妙想魔法不朽·传奇不熄

                                回复

                                使用道具 举报

                                死亡化身『住在GM村』守护者三角头铁牛龙血指环不灭狂雷月亮提灯破损的旧书邪恶圣杯大天使之杖

                                  回复

                                  使用道具 举报

                                  钢铁侠SCP-s-1889-第二页卡利亚权杖诺曼底号男巫之歌岛田半藏骑士遗盔永浴爱河缘起星空永远的克叔

                                    回复

                                    使用道具 举报

                                    史莱姆牧场风物长宜神奇四叶草和你一起飞行的皮卡丘『落樱缤纷』蓝礼·重生鹿三森林鹿王者之剑生金蛋的鹅人到中年

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

                                      使用道具 举报

                                      特殊-家园卫士Ⓡ???特殊-家园卫士Ⓛ性感男神GM【圣诞限定】心心念念小雪人六出冰花闪耀圣诞球

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

                                        使用道具 举报

                                        永远的克叔【夏日限定】夏日的泰凯斯钢铁侠裸体克里斯【圣诞限定】心心念念小雪人『召唤好运的角笛』征服之王史莱姆牧场男巫之歌旧日支配者—克苏鲁

                                          回复

                                          使用道具 举报

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

                                          本版积分规则

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

                                          GMT+8, 2024-12-22 09:38 , Processed in 0.160546 second(s), 153 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表