GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 3424|回复: 78
收起左侧

[功能优化] 【油猴脚本】二手市场寄售情况统计

  [复制链接] |关注本帖

咆哮虎的冠军之路You Can Pet Blaidd業火死鬥炙热的格拉迪欧拉斯裸体克里斯圣甲虫秘典永远的克叔【新春限定】果体 隆新神的赐福凯登‧阿兰科

     楼主| 星之子 发表于 2025-5-2 21:59:02 | 显示全部楼层 |阅读模式 <
    本帖最后由 星之子 于 2025-5-12 00:21 编辑
    动机
    每次补货过后的二手市场总是让人眼花缭乱。各种各样的勋章堆在一起,快来快来数一数,24678。
    那么有没有一种方法可以直观地看出各种勋章各寄售了几个?有的兄弟,有的。
    同样是调教DeepSeek写的,简单粗暴、方便快捷,不必再和GPT一样折腾全局模式、特定节点、科学上网,使用体验爽歪歪。

    功能

    排序逻辑:优先按照数量,从高到低排列。如果数量相同,则按照出现在市场中的先后顺序排列。
    外观设计:沿用已有格式,宽度字体颜色等均相同,以确保设计语言的统一。上方统计结果可以可以和下方勋章一一对齐。


    代码

    @Name  @Match  @Icon  
    1. // ==UserScript==
    2. // @name         二手市场寄售情况统计
    3. // @namespace    http://tampermonkey.net/
    4. // @version      0.1
    5. // @description  统计二手市场同类勋章数量(修复版)
    6. // @author       Étoiles & DeepSeek
    7. // @match        https://www.gamemale.com/wodexunzhang-showxunzhang.html?action=showjishou
    8. // @icon         https://www.google.com/s2/favicons?sz=64&domain=gamemale.com
    9. // @grant        GM_log
    10. // ==/UserScript==

    11. (function () {
    12.     'use strict';

    13.     // 调试日志函数
    14.     function debugLog(message) {
    15.         if (typeof GM_log !== 'undefined') {
    16.             GM_log(message);
    17.         }
    18.         console.log('[勋章统计]', message);
    19.     }

    20.     // 新版元素查找函数
    21.     function findMarketTitle() {
    22.         const titles = document.querySelectorAll('.my_biaoti');
    23.         for (let title of titles) {
    24.             if (title.textContent.includes('二手市场')) {
    25.                 debugLog('找到标题元素');
    26.                 return title;
    27.             }
    28.         }
    29.         debugLog('未找到标题元素');
    30.         return null;
    31.     }

    32.     // 主执行函数
    33.     function main() {
    34.         const titleDiv = findMarketTitle();
    35.         if (!titleDiv) {
    36.             debugLog('中止:未找到标题元素');
    37.             return;
    38.         }

    39.         // 创建统计容器
    40.         const statsDiv = document.createElement('div');
    41.         statsDiv.id = 'medal-stats-box';
    42.         statsDiv.style.cssText = `
    43.             padding: 5px 0px 10px 0px;
    44.             background: #f5f5f5;
    45.             border: 0px solid #ddd;
    46.             margin: 0;
    47.             color: #666;
    48.             font-size: 14px;
    49.         `;

    50.         // 修改后的统计逻辑(记录图片路径)
    51.         const medals = {};
    52.         const blocks = document.querySelectorAll('.myblok');
    53.         debugLog(`找到 ${blocks.length} 个勋章区块`);

    54.         blocks.forEach((blok, index) => {
    55.             const img = blok.querySelector('.myimg img');
    56.             if (!img) {
    57.                 debugLog(`区块 ${index} 缺少图片元素`);
    58.                 return;
    59.             }
    60.             const name = img.alt.trim();
    61.             const src = img.src; // 新增:获取图片路径
    62.             if (!name) {
    63.                 debugLog(`区块 ${index} 图片alt为空`);
    64.                 return;
    65.             }

    66.             // 记录图片路径和数量
    67.             if (!medals[name]) {
    68.                 medals[name] = {
    69.                     count: 1,
    70.                     src: src
    71.                 };
    72.             } else {
    73.                 medals[name].count++;
    74.             }
    75.         });

    76.         // 修改后的统计内容生成部分
    77.         statsDiv.innerHTML = `
    78.             <div style="font-size:16px; margin:5px 19px; font-weight:bold">寄售统计(共 ${blocks.length} 个)</div>
    79.             <div class="myfldiv clearfix">
    80.                 ${Object.entries(medals)
    81.                         .sort((a, b) => b[1].count - a[1].count)
    82.                         .map(([name, data]) => `
    83.                     <div class="myblok" style="width:145px;height:120px;">
    84.                         <div class="myimg" style="font-size:12px;color:#383a42">
    85.                             <img src="${data.src}"
    86.                                 alt="${name}"
    87.                                 style="${getOriginalImgStyle()}"> <!-- 保持原始图片样式 -->
    88.                             <p title="${name}"><b>${shortenName(name)}</b></p>
    89.                             <p>
    90.                                 <button type="button" class="pn"
    91.                                         style="cursor:default; background:#e5e5e5">
    92.                                     <em>${data.count}</em>
    93.                                 </button>
    94.                             </p>
    95.                         </div>
    96.                         <!-- 保留悬浮提示容器保持结构一致 -->
    97.                         <div class="mytip" style="display:none"></div>
    98.                     </div>
    99.                     `).join('')}
    100.             </div>
    101.         `;

    102.         // 获取原始图片样式函数
    103.         function getOriginalImgStyle() {
    104.             const sampleImg = document.querySelector('.myblok .myimg img');
    105.             return sampleImg ? sampleImg.getAttribute('style') || '' : '';
    106.         }

    107.         // 名称截断函数(保持原始处理逻辑)
    108.         function shortenName(name) {
    109.             return name.length > 14 ? name.substring(0, 12) + "..." : name;
    110.         }

    111.         // 插入元素
    112.         titleDiv.insertAdjacentElement('afterend', statsDiv);
    113.         debugLog('统计信息已插入');
    114.     }

    115.     // 启动方式:先尝试立即执行,然后每500ms检查一次,最多检查5次
    116.     let checkCount = 0;
    117.     function checkAndRun() {
    118.         if (checkCount++ > 5) {
    119.             debugLog('超过最大重试次数');
    120.             return;
    121.         }

    122.         if (document.querySelector('.my_biaoti')) {
    123.             main();
    124.         } else {
    125.             setTimeout(checkAndRun, 500);
    126.         }
    127.     }

    128.     // 使用DOMContentLoaded替代load事件
    129.     if (document.readyState === 'loading') {
    130.         document.addEventListener('DOMContentLoaded', checkAndRun);
    131.     } else {
    132.         checkAndRun();
    133.     }
    134. })();
    复制代码



    来自群组: 星象占卜

    本帖子中包含更多资源

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

    x

    评分

    参与人数 14血液 +21 追随 +14 堕落 +2 收起 理由
    百变小阴 + 1 很给力!
    秘技小浣 + 3 + 1 + 1 本浣喜翻
    SweetUncle + 5 + 1 很给力!
    莲一 + 1 很给力!
    PURO_ + 1 + 1 + 1 nice
    叶雨时 + 1
    瓦尼 + 1
    xu33 + 3 + 1
    zibatco2 + 1 + 1 赞一个!
    咸鱼鱼 + 1 很给力!

    查看全部评分

    回复

    使用道具 举报

    弗雷迪玩偶呆猫『搓粉团珠』炽焰咆哮虎虚空之海的鲸官复原职传奇亚瑟‧摩根

      克莱因蓝 发表于 2025-5-2 22:02:44 | 显示全部楼层 <
      回复

      使用道具 举报

      【新春限定】果体 隆里昂‧S‧甘乃迪Futūrum(未来)检定场诺克提斯·路西斯·伽拉姆未来的黎明普隆普特·阿金塔姆卡洛斯·奥利维拉仇恋虚空之海的鲸

        诺鸦cc 发表于 2025-5-2 22:05:03 | 显示全部楼层 <
        居然这么简洁,AI写这种代码真的好方便啊.jpg
        狗狗居然剩的这么多,看来大家都是喜欢金币的)
        回复

        使用道具 举报

        秘密特工dog漂洋小船闪耀的魔仙棒吃饱金币的Doge肉乖乖极·龙の意雪王的心脏荣光的残像

          原炀小狼狗 发表于 2025-5-2 22:05:08 | 显示全部楼层 <
          虽然是使用DeepSeek来写,但是大佬你专业的让我害怕,这个功能确实可以让对勋章研究不深的玩家有个大致判断和感受
          回复

          使用道具 举报

          桂花米糕索尔·奥丁森干涸的圣杯无尽的怀表原初の珍珠雄躯的昇格蜂蜂小甜心不灭的蓝宝石永远的克叔萨菲罗斯

            泥潭蘑菇 发表于 2025-5-2 22:13:46 | 显示全部楼层 <
            回复

            使用道具 举报

            泰比里厄斯【夏日限定】夏日的泰凯斯王者之盾九尾妖狐·阿狸GM吸血伯爵dog夏日柯基风暴磁场之鳄

              秘技小浣 发表于 2025-5-2 22:14:34 | 显示全部楼层 <
              回复

              使用道具 举报

              業火死鬥传奇检定场弗雷迪玩偶桂花米糕虚空之海的鲸【圣诞限定】心心念念小雪人吃饱金币的Doge缘起星空鎏彩万幢

                柏芸 发表于 2025-5-2 22:16:47 | 显示全部楼层 <
                好棒的脚本,这下就不担心因为滑动错过心仪的勋章了,赞美星老师
                  收起(3)
                • 柏芸 柏芸 :呸原来是统计,不过想想因为寄售价格不同也确实没法像补货一样能直接买
                  2025-05-02 22:19 回复
                • 星之子 星之子 :其实一开始是想做成“点击后自动购买最靠前的该勋章”(毕竟数量显示框本来就是购买按钮改的,本身是个button元素,可以点击逻辑通顺对吧)但一方面不好测试,一方面担心算成脚本抢勋章什么的,所以就搁置了(悲)
                  2025-05-02 22:49 回复
                • 柏芸 柏芸 :回复 星之子 :想想确实是有这个问题,不过能直观看到寄售的勋章种类和数量也很方便了,真的很赞
                  2025-05-02 22:57 回复
                • 我也说一句

                回复

                使用道具 举报

                检定场内在命运的轮廓英普瑞斯炽焰咆哮虎亚瑟‧摩根業火死鬥人间之神

                  momohang 发表于 2025-5-2 22:17:33 | 显示全部楼层 <
                  回复

                  使用道具 举报

                  岛田半藏永亘环龙血指环亚索信仰之心『狄文卡德的残羽』熔岩鹰桂花米糕

                    唉缘来熙 发表于 2025-5-2 22:18:32 | 显示全部楼层 <
                    回复

                    使用道具 举报

                    神秘商店贵宾卡萨赫的蛋糕雷文克劳收到情书明日之子Dante卡洛斯·奥利维拉永远的克叔索林·临终一役

                      KurisuV 发表于 2025-5-2 22:18:41 | 显示全部楼层 <
                      高技术力的帖子,太赞了,感谢楼主分享!这个对萌新帮助真的很大,可以大致对勋章有个客观的判断,也不会被繁杂的二手市场看的眼花缭乱
                      回复

                      使用道具 举报

                      You Can Pet Blaidd月影狼『落樱缤纷』阿努比斯信徒業火死鬥泰比里厄斯崩朽之青铜龙王至尊巴哈姆特自定义男从Homunculus

                        归北溟 发表于 2025-5-2 22:21:00 | 显示全部楼层 <
                        挺有用的。为啥大家都这么不待见连枷?虽然属性不行但是它是阿努比斯啊(你是真的饿了)
                        回复

                        使用道具 举报

                        弗雷迪玩偶发条八音盒桂花米糕鎏彩万幢女巫之路虚空之海的鲸【新春限定】果体 隆『召唤好运的角笛』永远的克叔業火死鬥

                          娱乐法师火布偶 发表于 2025-5-2 22:21:09 | 显示全部楼层 <
                          回复

                          使用道具 举报

                          桂花米糕

                            不在彩虹脚下 发表于 2025-5-2 22:21:20 | 显示全部楼层 <
                            回复

                            使用道具 举报

                            森林羊男青鸾蛋虎克船长巴特‧贝克冒险用指南针瑞雪兆丰年,生灵万物新都市:天际线2

                              QLL 发表于 2025-5-2 22:23:13 | 显示全部楼层 <
                              回复

                              使用道具 举报

                              男巫之歌卡利亚权杖You Can Pet Blaidd巴哈姆特克莱夫・罗兹菲尔德羽人与蜕变无瑕的回忆使命终成

                                掠影狼现 发表于 2025-5-2 22:25:05 | 显示全部楼层 <
                                回复

                                使用道具 举报

                                20x43 隐形➀未散的宴席猎户座的明珠缘起星空虚空之海的鲸16x43 隐形➁弗雷迪玩偶发条八音盒16x43 隐形➀

                                  Riverlethe 发表于 2025-5-2 22:25:55 | 显示全部楼层 <
                                  回复

                                  使用道具 举报

                                  【夏日限定】夏日的泰凯斯『冰雕马拉橇』裸体克里斯亭亭如盖暗影烈焰『搓粉团珠』人鱼之泪蒂法·洛克哈特

                                    Kaicneg 发表于 2025-5-2 22:28:34 | 显示全部楼层 <
                                    回复

                                    使用道具 举报

                                    【夏日限定】夏日的泰凯斯永远的克叔克里斯‧雷德菲尔德安德森‧戴维斯果体76裸体克里斯【新春限定】果体 隆内森·德雷克旧日支配者—克苏鲁亚瑟‧摩根

                                      歧路歌 发表于 2025-5-2 22:36:25 | 显示全部楼层 <
                                      回复

                                      使用道具 举报

                                      虚空之海的鲸巴哈姆特至尊巴哈姆特蜂蜂小甜心发条八音盒弗雷迪玩偶Beauty and the Beast诺克提斯·路西斯·伽拉姆传奇杰森‧斯坦森

                                        mintea 发表于 2025-5-2 22:37:45 | 显示全部楼层 <
                                        回复

                                        使用道具 举报

                                        業火死鬥旧日支配者—克苏鲁乘风破浪的武士刀月影狼

                                          深暗幽狼 发表于 2025-5-2 22:39:58 | 显示全部楼层 <
                                          本帖最后由 深暗幽狼 于 2025-5-4 12:52 编辑

                                          换到前年还没放开回收时,那二手已经是很长的页面了。那么这次蝉联二手新上架的勋章会是、连枷还是女巫呢(
                                          所以说什么游戏mod论坛嘛,全都是btsrk,猫和狗首发80枚,全都被买断货了(
                                          回复

                                          使用道具 举报

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

                                          本版积分规则

                                          关闭

                                          站长公告上一条 /1 下一条

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

                                          GMT+8, 2025-12-6 19:04 , Processed in 0.151504 second(s), 145 queries , Redis On.

                                          Copyright © 2013-2025 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表