GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 2891|回复: 86
收起左侧

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

    [复制链接] |关注本帖

GM活动员

Level 0

『终点站:极地』被释放的灵魂征服之王虚空之海的鲸死灵之书圣甲虫秘典破损的旧书夜魔护符Futūrum(未来)男巫之歌

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

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

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

    官复原职实现梦想终归一人崩朽之青铜龙王虚空之海的鲸和你一起飞行的皮卡丘极·龙の意『召唤好运的角笛』 『先知灵药:真视』重建熊屋

      回复

      使用道具 举报

      组件大师

       『先知灵药:真视』『不败之花』虚空之海的鲸男巫之歌史莱姆牧场诺曼底号缘起星空诺克提斯·路西斯·伽拉姆

        回复

        使用道具 举报

        Level 0

        克莱夫・罗兹菲尔德卡洛斯·奥利维拉落雪勇者与龙的传说-第四页征服之王阿拉喵?神灯『随时随地开启!』死灵之书『随时随地开启!』被释放的灵魂男巫之歌

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

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

          使用道具 举报

          Level 9

          没有梦想的咸鱼永浴爱河炽天使之拥人鱼之泪月影狼克莱夫・罗兹菲尔德崩朽之青铜龙王業火死鬥索林·临终一役岛田半藏

            回复

            使用道具 举报

            Level 0

            GM活动员

            我的天使阿拉喵?神灯

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

              使用道具 举报

              Level 10 max

              雄躯的昇格 『先知灵药:真视』『梦旅存根』诺曼底号『不败之花』汤姆·赫兰德『终点站:极地』被释放的灵魂至死不渝魔法不朽·传奇不熄

                回复

                使用道具 举报

                Level 0

                GM活动员

                小小舞台『 弗霖的琴』虚空之海的鲸業火死鬥男巫之歌永浴爱河泰比里厄斯崩朽之青铜龙王岛田源氏风物长宜

                  回复

                  使用道具 举报

                  夏日柯基人鱼之泪肉垫手套

                    回复

                    使用道具 举报

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

                      回复

                      使用道具 举报

                      『住在GM村』炽天使之拥『伊黎丝的赞词』纯真护剑『随时随地开启!』『随时随地开启!』神奇四叶草深渊遗物夏日柯基阿拉喵?神灯

                        回复

                        使用道具 举报

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

                          回复

                          使用道具 举报

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

                            回复

                            使用道具 举报

                            炼金之心崩朽之青铜龙王虚空之海的鲸实现梦想官复原职永浴爱河白野威業火死鬥十年一梦男巫之歌

                              回复

                              使用道具 举报

                               『先知灵药:真视』风物长宜特殊-家园卫士Ⓛ生金蛋的鹅特殊-家园卫士Ⓡ最终幻想XIV超级名贵无用宝剑装饰触手Ⓛ猫化弩哥装饰触手Ⓡ

                                回复

                                使用道具 举报

                                雷夜嘯聲守护者三角头赛博朋克2077大黄蜂(ChevroletCamaro)铁牛不灭狂雷风物长宜荒野大镖客:救赎 II龙腾世纪:审判圣剑艾尔尤因

                                  回复

                                  使用道具 举报

                                   迷之香蕉特饮 『先知灵药:真视』卡利亚权杖诺曼底号××之歌【圣诞限定】心心念念小雪人十字叶章被释放的灵魂灵魂之椅遗留之人的城堡

                                    回复

                                    使用道具 举报

                                    水泡术神奇四叶草和你一起飞行的皮卡丘『落樱缤纷』蓝礼·重生鹿三森林鹿羅素·托維邦尼尼卡洛斯·奥利维拉史莱姆牧场

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

                                      使用道具 举报

                                      小小舞台『私有海域』

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

                                        使用道具 举报

                                        永浴爱河虚空之海的鲸永远的克叔吃饱金币的Doge裸体克里斯征服之王我的天使钢铁侠旧日支配者—克苏鲁男巫之歌

                                          回复

                                          使用道具 举报

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

                                          本版积分规则

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

                                          GMT+8, 2024-4-20 06:59 , Processed in 0.155439 second(s), 153 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表