GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 1412|回复: 97
收起左侧

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

    [复制链接] |关注本帖

『逆境中的幸运女神』幸运女神的微笑近地夜航御医神兔瓮中能言蛙纯真护剑我的冶金打火机

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

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


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


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


    使用中有问题欢迎反馈



    本帖子中包含更多资源

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

    x

    评分

    参与人数 29血液 +73 追随 +27 堕落 +14 收起 理由
    Sam30 + 1 + 1 + 1
    Deno13 + 1
    毛茸茸的黑貓 + 1 + 1
    一万只小仓鼠 + 3 + 1 + 1 很给力!
    nuomici + 3 + 1 + 1 很给力
    wubingyonglei + 3 + 1 + 1 赞一个!
    你好再见 + 1 淡定
    feng1997817 + 5 + 1 很给力!
    黑达克 + 1
    深暗幽狼 + 1

    查看全部评分

    已有1人关注本帖

    Zeperion

    本帖被以下淘专辑推荐:

    回复

    使用道具 举报

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

      回复

      使用道具 举报

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

        回复

        使用道具 举报

        没有梦想的咸鱼死亡化身格拉迪欧拉斯穿过的白袜Drover男用贞操带卡洛斯·奥利维拉Chris MazdzerLife of Water

          回复

          使用道具 举报

          亚当‧简森擎天柱(Peterbilt389)嗜血斩首斧冥界魔眼山猫图腾眼镜蛇图腾力量腕带

            回复

            使用道具 举报

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

              回复

              使用道具 举报

              闪耀的魔仙棒绿茵宝钻金牌矿工无尽的怀表【圣诞限定】心心念念小雪人人鱼之泪脉律辐石劫掠核芯瓮中能言蛙遗留之人的城堡

                回复

                使用道具 举报

                SCP-s-1889-第二页『随时随地开启!』无尽的怀表『随时随地开启!』被释放的灵魂虚空之海的鲸不朽之恋幸运女神的微笑『逆境中的幸运女神』高端噬魂者

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

                  使用道具 举报

                  喷涌的粪桶劫掠核芯冒险专用绳索御医神兔刀锋女王 - 重生诺克提斯·路西斯·伽拉姆吃饱的小阿尔雷夜嘯聲

                    回复

                    使用道具 举报

                    『逆境中的幸运女神』魔眼护符骑兽之子召唤古代战士近地夜航元气菠菜人烈焰天使弓龙血指环『灰域来音』

                      回复

                      使用道具 举报

                      『逆境中的幸运女神』『分析天平』『不败之花』诺曼底号乘风破浪的武士刀幸运女神的微笑缘起星空

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

                        使用道具 举报

                        征服之王被释放的灵魂死灵之书圣甲虫秘典破损的旧书吃饱金币的Doge生金蛋的鹅内森·德雷克果体76Futūrum(未来)

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

                          使用道具 举报

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

                            回复

                            使用道具 举报

                            达拉然十年一梦岛田源氏Forever Titanic虚空之海的鲸缘起星空美恐:新的开始雄躯的昇格『终点站:极地』

                              回复

                              使用道具 举报

                              史莱哲林神秘商店贵宾卡裸体克里斯【夏日限定】夏日的泰凯斯内森·德雷克卡洛斯·奥利维拉索尔·奥丁森性感男神GM叛逆者暮狼归来

                                回复

                                使用道具 举报

                                内森·德雷克業火死鬥诺克提斯·路西斯·伽拉姆没有梦想的咸鱼克莱夫・罗兹菲尔德岛田半藏性感男神GM莱因哈特·威尔海姆暮狼归来

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

                                  使用道具 举报

                                  最终幻想XVI『逆境中的幸运女神』『落樱缤纷』『泥潭颂唱者』寶可夢 Pokémon

                                    回复

                                    使用道具 举报

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

                                      回复

                                      使用道具 举报

                                      没有梦想的咸鱼幸运女神的微笑『逆境中的幸运女神』雪王的心脏『住在GM村』炼金之心雷霆晶球收到情书捡到了肥皂神秘商店贵宾卡

                                        回复

                                        使用道具 举报

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

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

                                          使用道具 举报

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

                                          本版积分规则

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

                                          GMT+8, 2024-10-24 09:29 , Processed in 0.151134 second(s), 150 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表