GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 2393|回复: 104
收起左侧

[功能优化] 【界外来客】【2024.09.23更新】勋章信息快速查询——博物馆传送门

    [复制链接] |关注本帖

朴素的誓言无瑕的回忆『逆境中的幸运女神』幸运女神的微笑GHOST瓮中能言蛙近地夜航

     楼主| thh866 发表于 2024-9-20 03:29:34 | 显示全部楼层 |阅读模式 |取消关注该作者的回复
    本帖最后由 thh866 于 2024-11-17 01:20 编辑

    抽空整了个用处不那么大的脚本蹭蹭勋章


    功能
    点击勋章图片或文本,会直接跳转到博物馆对应页面


    生效范围
    1、勋章商城的相关页面,为图片增加了链接;

    2、勋章商城(存在勋章记录)的相关页面,为勋章名称增加了链接;

    3、帖子页面,删除了用户头像下方勋章向勋章商城的跳转,并为图片绑定点击事件进行跳转;


    实现代码
    @Name
    1. // ==UserScript==
    2. // [url=home.php?mod=space&uid=668096]@Name[/url]         博物馆传送门
    3. // @namespace    https://www.gamemale.com/space-uid-679233.html
    4. // @homepage     https://www.gamemale.com/thread-144398-1-1.html
    5. // @supportURL   https://www.gamemale.com/thread-144398-1-1.html
    6. // @version      2024-09-22
    7. // @description  Click to jump!
    8. // @author       thh866
    9. // @match        https://www.gamemale.com/wodexunzhang-showxunzhang.html*
    10. // @match        https://www.gamemale.com/plugin.php?id=wodexunzhang%3Ashowxunzhang&fid=*
    11. // @match        https://www.gamemale.com/plugin.php?id=wodexunzhang%3Ashowxunzhang&action=*
    12. // @match        https://www.gamemale.com/thread-*
    13. // @match        https://www.gamemale.com/forum.php?mod=viewthread&tid*
    14. // @grant        none
    15. // ==/UserScript==

    16. (function() {
    17.     'use strict';

    18.     // 勋章商城、荣誉勋章、奖励勋章、二手市场和我的勋章页面的勋章图片的点击跳转开关
    19.     const xunzhangSwitch = 1;

    20.     // 帖子详情页用户头像下展示的勋章图片的点击跳转开关
    21.     const threadSwitch = 1;

    22.     // 二手市场页面的勋章记录的文字的点击跳转开关
    23.     const recordSwitch = 1;

    24.     // 勋章名称到帖子的映射表
    25.     const name2url = {
    26.         '詹姆斯·维加':'12025', '詹姆斯‧维加':'12025', '詹姆斯·维加(James Vega)':'12025',
    27.         '奥伦':'12027', '奥伦(Auron)':'12027',
    28.         '希德‧海温特':'12028', '希德‧海温特(Cid Highwind)':'12028',
    29.         '吉姆‧雷诺':'12030', '吉姆‧雷诺(Jim Raynor)':'12030',
    30.         '法卡斯':'12032', '法卡斯(Farkas)':'12032',

    31.         // ...

    32.         'Zootopia':'144106', '启程':'144106', '全景':'144106', '沙漠':'144106', '冰原':'144106', '雨林':'144106',
    33.     };

    34.     // 判断是否是帖子页面的正则
    35.     const reg = /^https:\/\/www.gamemale.com\/thread/;
    36.     const reg2 = /^https:\/\/www.gamemale.com\/forum.php/;

    37.     // 勋章商城、荣誉勋章、奖励勋章、二手市场和我的勋章页面修改href
    38.     // <a href="javascript:void(0);"> => <a href="..." target="_blank">
    39.     function modifyHref(){
    40.         if (1 == xunzhangSwitch){
    41.             // debugger;
    42.             let allDivs = document.getElementsByClassName('myimg');
    43.             console.log(allDivs.length);
    44.             for (let i = 0; i < allDivs.length; i++) {
    45.                 let aTag = allDivs[i].querySelector('a');
    46.                 let href = aTag.getAttribute('href');
    47.                 if (href && href.includes('javascript:void')) {
    48.                     let alt = aTag.querySelector('img').getAttribute('alt');
    49.                     console.log(alt);
    50.                     if (alt && name2url[alt])
    51.                     {
    52.                         aTag.setAttribute('href', href.replace('javascript:void(0);', 'thread-'+name2url[alt]+'-1-1.html'));
    53.                         aTag.setAttribute('target', '_blank');
    54.                     }
    55.                 }
    56.             }
    57.         }
    58.         return 0;
    59.     }

    60.     // 帖子详情页为<img>增加Listener
    61.     function addHref(){
    62.         if (1 == threadSwitch){
    63.             // debugger;
    64.             let pTags = document.getElementsByClassName('md_ctrl wodexunzhang_img');
    65.             for (let i = 0; i < pTags.length; i++) {
    66.                 let imgs = pTags[i].getElementsByTagName('img');
    67.                 console.log("[L" + (i + 1) + " : " + imgs.length + "]");
    68.                 for (let j = 0; j <imgs.length; j++){
    69.                     let alt = imgs[j].getAttribute('alt');
    70.                     if (alt){
    71.                         if (alt.includes('『随时随地开启!』')){
    72.                             let tip = imgs[j].getAttribute('tip');
    73.                             alt = (tip && tip.includes('知识')) ? '『任天堂Switch』红蓝√' : '『任天堂Switch』灰黑√'; // 旅程
    74.                         }
    75.                         else if(alt.includes('月光骑士')){
    76.                             let tip = imgs[j].getAttribute('tip');
    77.                             alt = (tip && tip.includes('回帖 血液')) ? '马克·史贝特' : '史蒂文·格兰特'; // 回帖 金币
    78.                         }
    79.                         if (name2url[alt]){
    80.                             imgs[j].addEventListener("click", function() {
    81.                                 window.open('thread-'+name2url[alt]+'-1-1.html', '_blank');
    82.                             });
    83.                             console.log(alt);
    84.                         }
    85.                         else{
    86.                             console.log(alt+' not found!');
    87.                         }
    88.                     }
    89.                 }
    90.                 let aTag = pTags[i].getElementsByTagName('a')[0];
    91.                 let href = aTag.getAttribute('href');
    92.                 if (href && href.includes('wodexunzhang-showxunzhang.html')){
    93.                     aTag.setAttribute('href', href.replace('wodexunzhang-showxunzhang.html', 'javascript:void(0);'));
    94.                 }
    95.             }
    96.         }
    97.         return 0;
    98.     }

    99.     // 勋章记录为<b>增加<a href...></a>
    100.     function modifyTagB(){
    101.         if (1 == recordSwitch){
    102.             // debugger;
    103.             let ul = document.getElementsByClassName('mn mymn');
    104.             let li = ul[0].getElementsByTagName('li');
    105.             for (let i = 0; i < li.length; i++) {
    106.                 let bTags = li[i].getElementsByTagName('b');
    107.                 for (let j = 0; j <bTags.length; j++){
    108.                     if (bTags[j] && name2url[bTags[j].textContent]){
    109.                         let aElement = document.createElement('a');
    110.                         aElement.href = 'thread-'+name2url[bTags[j].textContent]+'-1-1.html';
    111.                         aElement.textContent = bTags[j].textContent;
    112.                         aElement.target = '_blank';
    113.                         bTags[j].textContent = '';
    114.                         bTags[j].appendChild(aElement);
    115.                         break;
    116.                     }
    117.                 }
    118.             }
    119.         }
    120.         return 0;
    121.     }

    122.     // 页面加载完再执行
    123.     window.onload=function(){
    124.         if (reg.test(window.location.href) || reg2.test(window.location.href)){
    125.             addHref();
    126.         }
    127.         else{
    128.             modifyHref();
    129.             modifyTagB();
    130.         }
    131.     }
    132. })();
    复制代码


    使用方法
    导入脚本,可根据需要修改开关配置


    存在的问题
    • 帖子页面由于部分勋章不同等级名称不同,这一部分数据未录入完整,无法跳转,这个有空会跟以前的帖子一起慢慢改,前提是能找到是哪个勋章
    • 部分不在博物馆记录的勋章无法进行跳转(如剧情中的『活动代币』、『酒馆蛋煲』、『转生经筒』、『浪客便当』、『天价酬劳Ⓖ』等,装饰/特殊中的特殊-纯真护剑,故事中的被祝福的新旅程等等),没有就没必要跳了
    • 页面未加载完全时,不生效,无能为力告辞


    更新记录

    2024/11/17
    1、适配真人男从名称加点的修改;
    2、适配白猪猪储蓄罐㊖、粉猪猪储蓄罐㊖、金猪猪储蓄罐㊖的名称;

    2024/09/23
    1、修改了由于万圣南瓜、丹·安博尔、汤姆·赫兰德和超人在博物馆和阿尔伯特·威斯克、鬼王酒吞童子、Scott Ryder和GM論壇初心者勛章的No重复导致的错误tid;
    2、增加了帖子页面对两个『随时随地开启!』、月光骑士的区分;
    3、补充了映射表;


    使用中有问题欢迎反馈




    本帖子中包含更多资源

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

    x

    评分

    参与人数 32血液 +78 追随 +30 堕落 +16 收起 理由
    469MAPabu + 1 + 1
    红叶黄花 + 5 + 1 + 1 大佬牛皮!
    vander + 1
    Sam30 + 1 + 1 + 1
    Deno13 + 1
    毛茸茸的黑貓 + 1 + 1
    一万只小仓鼠 + 3 + 1 + 1 很给力!
    nuomici + 3 + 1 + 1 很给力
    wubingyonglei + 3 + 1 + 1 赞一个!
    你好再见 + 1 淡定

    查看全部评分

    已有1人关注本帖

    Zeperion

    本帖被以下淘专辑推荐:

    回复

    使用道具 举报

    守护者三角头小小安全帽吃饱金币的Doge『终点站:极地』近地夜航内森·德雷克老旧的怀表男巫之歌落雪勇者与龙的传说-第一页雄躯的昇格

      回复

      使用道具 举报

      『钟楼盐水棒冰』小小安全帽Forever Titanic神人的编制发无尽的怀表冒险专用绳索金牌矿工御医神兔幸运女神的微笑『逆境中的幸运女神』

        回复

        使用道具 举报

        死亡化身格拉迪欧拉斯穿过的白袜Drover男用贞操带卡洛斯·奥利维拉Chris MazdzerLife of Water『落樱缤纷』

          回复

          使用道具 举报

          野兽之子收到情书变骚喷雾亚当‧简森神秘商店贵宾卡千杯不醉马克雷文克劳

            回复

            使用道具 举报

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

              回复

              使用道具 举报

              不洁圣子璀璨金币小丑与格雷与星光璀璨牌中小丑 · 呼之欲出镜中小鸟无尽的怀表幸运女神的微笑遗留之人的城堡诞星之所

                回复

                使用道具 举报

                SCP-s-1889-第二页缘起星空虚空之海的鲸裸体克里斯圣甲虫秘典『随时随地开启!』被释放的灵魂『随时随地开启!』无尽的怀表男巫之歌

                  泥潭的各级勋章名称都不一样,经常在别人头像下面看到挂着的勋章,却要全文搜索才能找得到具体是哪个。
                  之前Makima老师有开发过一个勋章搜索,原理是点击后按照名称在博物馆全文搜索;而这个脚本则更加生猛,直接用1000多行的映射表把名字一对一映射到博物馆的链接,不通过搜索而是点击直达。
                  一千多行!很难想象整理出这1000多行各级勋章的名称对应的帖子地址是多离谱的工作量,大佬辛苦了!
                    收起(1)
                  回复

                  使用道具 举报

                  『正在入住GM村』上古卷轴V:天际丹妮莉丝·坦格利安克苏鲁的仆从女神之泪劫掠核芯御医神兔雷夜嘯聲

                    回复

                    使用道具 举报

                    『住在GM村』珊瑚泡泡鱼不曾寄出的信件小小安全帽魔眼护符骑兽之子近地夜航元气菠菜人烈焰天使弓龙血指环

                      回复

                      使用道具 举报

                      内森·德雷克【圣诞限定】心心念念小雪人巴比伦辞典

                        好久之前用过类似的脚本,就是点击勋章跳转的,这个工程量很大了可以说,辛苦了楼主,soon好评!
                        回复

                        使用道具 举报

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

                          !不会是一个一个自己搞得吧,好大的工作量
                          我之前做的是根据alt属性搜索
                          如果按照你的思路,我会写个自动提取博物馆的标题和tid,虽然只有一级的名字,但是也够用了(?)
                            收起(1)
                          回复

                          使用道具 举报

                          弗图AI铁汉柔情诺克提斯·路西斯·伽拉姆普隆普特·阿金塔姆不屈之枪·阿特瑞斯神灯月光骑士巴基超人

                            回复

                            使用道具 举报

                            『户口本: Lv7+』十年一梦岛田源氏杰森‧斯坦森Forever Titanic虚空之海的鲸缘起星空美恐:新的开始雄躯的昇格『终点站:极地』

                              回复

                              使用道具 举报

                              裸体克里斯【夏日限定】夏日的泰凯斯内森·德雷克卡洛斯·奥利维拉索尔·奥丁森性感男神GM杰森‧斯坦森叛逆者

                                回复

                                使用道具 举报

                                内森·德雷克業火死鬥诺克提斯·路西斯·伽拉姆BIG BOSS克莱夫・罗兹菲尔德岛田半藏性感男神GM莱因哈特·威尔海姆

                                  koh 发表于 2024-9-20 07:41:57 | 显示全部楼层 |取消关注该作者的回复
                                  回复

                                  使用道具 举报

                                  无瑕的回忆幸运女神的微笑『逆境中的幸运女神』最终幻想XVI朴素的誓言『迷翳结晶:收集颗粒』『落樱缤纷』

                                    回复

                                    使用道具 举报

                                    不曾寄出的信件『随时随地开启!』漂洋小船『随时随地开启!』冒险用指南针破损的旧书丛林的鸟飞走了雪王的心脏人鱼之泪幽灵竹筒

                                      回复

                                      使用道具 举报

                                      敖蜃星没有梦想的咸鱼诺克提斯·路西斯·伽拉姆普隆普特·阿金塔姆传说的黑道-桐生一马亚当‧简森幻象克里斯·埃文斯至死不渝杰森‧斯坦森

                                        回复

                                        使用道具 举报

                                        最终幻想XVI瑞雪兆丰年,生灵万物新不洁圣子男用贞操带魔法石碑十字军护盾远古石碑

                                          Howieee 发表于 2024-9-20 08:16:10 手机端 | 显示全部楼层 |取消关注该作者的回复
                                          回复

                                          使用道具 举报

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

                                          本版积分规则

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

                                          GMT+8, 2024-12-22 01:52 , Processed in 0.179778 second(s), 145 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表