【界外来客】【2024.09.23更新】勋章信息快速查询——博物馆传送门
本帖最后由 thh866 于 2024-9-23 01:18 编辑抽空整了个用处不那么大的脚本蹭蹭勋章
功能
点击勋章图片或文本,会直接跳转到博物馆对应页面
生效范围
1、勋章商城的相关页面,为图片增加了链接;
2、勋章商城(存在勋章记录)的相关页面,为勋章名称增加了链接;
3、帖子页面,删除了用户头像下方勋章向勋章商城的跳转,并为图片绑定点击事件进行跳转;
实现代码
@Name
// ==UserScript==
// @Name 博物馆传送门
// @namespace https://www.gamemale.com/space-uid-679233.html
// @homepage https://www.gamemale.com/thread-144398-1-1.html
// @supportURL https://www.gamemale.com/thread-144398-1-1.html
// @version 2024-09-22
// @descriptionClick to jump!
// @author thh866
// @match https://www.gamemale.com/wodexunzhang-showxunzhang.html*
// @match https://www.gamemale.com/plugin.php?id=wodexunzhang%3Ashowxunzhang&fid=*
// @match https://www.gamemale.com/plugin.php?id=wodexunzhang%3Ashowxunzhang&action=*
// @match https://www.gamemale.com/thread-*
// @match https://www.gamemale.com/forum.php?mod=viewthread&tid*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 勋章商城、荣誉勋章、奖励勋章、二手市场和我的勋章页面的勋章图片的点击跳转开关
const xunzhangSwitch = 1;
// 帖子详情页用户头像下展示的勋章图片的点击跳转开关
const threadSwitch = 1;
// 二手市场页面的勋章记录的文字的点击跳转开关
const recordSwitch = 1;
// 勋章名称到帖子的映射表
const name2url = {
'詹姆斯·维加':'12025', '詹姆斯‧维加':'12025', '詹姆斯·维加(James Vega)':'12025',
'奥伦':'12027', '奥伦(Auron)':'12027',
'希德‧海温特':'12028', '希德‧海温特(Cid Highwind)':'12028',
'吉姆‧雷诺':'12030', '吉姆‧雷诺(Jim Raynor)':'12030',
'法卡斯':'12032', '法卡斯(Farkas)':'12032',
// ...
'Zootopia':'144106', '启程':'144106', '全景':'144106', '沙漠':'144106', '冰原':'144106', '雨林':'144106',
};
// 判断是否是帖子页面的正则
const reg = /^https:\/\/www.gamemale.com\/thread/;
const reg2 = /^https:\/\/www.gamemale.com\/forum.php/;
// 勋章商城、荣誉勋章、奖励勋章、二手市场和我的勋章页面修改href
// <a href="javascript:void(0);"> => <a href="..." target="_blank">
function modifyHref(){
if (1 == xunzhangSwitch){
// debugger;
let allDivs = document.getElementsByClassName('myimg');
console.log(allDivs.length);
for (let i = 0; i < allDivs.length; i++) {
let aTag = allDivs.querySelector('a');
let href = aTag.getAttribute('href');
if (href && href.includes('javascript:void')) {
let alt = aTag.querySelector('img').getAttribute('alt');
console.log(alt);
if (alt && name2url)
{
aTag.setAttribute('href', href.replace('javascript:void(0);', 'thread-'+name2url+'-1-1.html'));
aTag.setAttribute('target', '_blank');
}
}
}
}
return 0;
}
// 帖子详情页为<img>增加Listener
function addHref(){
if (1 == threadSwitch){
// debugger;
let pTags = document.getElementsByClassName('md_ctrl wodexunzhang_img');
for (let i = 0; i < pTags.length; i++) {
let imgs = pTags.getElementsByTagName('img');
console.log("");
for (let j = 0; j <imgs.length; j++){
let alt = imgs.getAttribute('alt');
if (alt){
if (alt.includes('『随时随地开启!』')){
let tip = imgs.getAttribute('tip');
alt = (tip && tip.includes('知识')) ? '『任天堂Switch』红蓝√' : '『任天堂Switch』灰黑√'; // 旅程
}
else if(alt.includes('月光骑士')){
let tip = imgs.getAttribute('tip');
alt = (tip && tip.includes('回帖 血液')) ? '马克·史贝特' : '史蒂文·格兰特'; // 回帖 金币
}
if (name2url){
imgs.addEventListener("click", function() {
window.open('thread-'+name2url+'-1-1.html', '_blank');
});
console.log(alt);
}
else{
console.log(alt+' not found!');
}
}
}
let aTag = pTags.getElementsByTagName('a');
let href = aTag.getAttribute('href');
if (href && href.includes('wodexunzhang-showxunzhang.html')){
aTag.setAttribute('href', href.replace('wodexunzhang-showxunzhang.html', 'javascript:void(0);'));
}
}
}
return 0;
}
// 勋章记录为<b>增加<a href...></a>
function modifyTagB(){
if (1 == recordSwitch){
// debugger;
let ul = document.getElementsByClassName('mn mymn');
let li = ul.getElementsByTagName('li');
for (let i = 0; i < li.length; i++) {
let bTags = li.getElementsByTagName('b');
for (let j = 0; j <bTags.length; j++){
if (bTags && name2url.textContent]){
let aElement = document.createElement('a');
aElement.href = 'thread-'+name2url.textContent]+'-1-1.html';
aElement.textContent = bTags.textContent;
aElement.target = '_blank';
bTags.textContent = '';
bTags.appendChild(aElement);
break;
}
}
}
}
return 0;
}
// 页面加载完再执行
window.onload=function(){
if (reg.test(window.location.href) || reg2.test(window.location.href)){
addHref();
}
else{
modifyHref();
modifyTagB();
}
}
})();
使用方法
导入脚本,可根据需要修改开关配置
存在的问题
[*]帖子页面由于部分勋章不同等级名称不同,这一部分数据未录入完整,无法跳转,这个有空会跟以前的帖子一起慢慢改,前提是能找到是哪个勋章
[*]部分不在博物馆记录的勋章无法进行跳转(如剧情中的『活动代币』、『酒馆蛋煲』、『转生经筒』、『浪客便当』、『天价酬劳Ⓖ』等,装饰/特殊中的特殊-纯真护剑,故事中的被祝福的新旅程等等),没有就没必要跳了
[*]页面未加载完全时,不生效,无能为力告辞
更新记录
2024/09/23
1、修改了由于万圣南瓜、丹·安博尔、汤姆·赫兰德和超人在博物馆和阿尔伯特·威斯克、鬼王酒吞童子、Scott Ryder和GM論壇初心者勛章的No重复导致的错误tid;
2、增加了帖子页面对两个『随时随地开启!』、月光骑士的区分;
3、补充了映射表;
使用中有问题欢迎反馈
好东西啊,跳过搜索流程,不需要每次都等那个搜索时间限制了{:4_114:} 很不错啊,这样就不会弹出短时间不能搜索了 芜直接跳转真不错,还能直接跳谭友的展示勋章{:4_86:} 新人大感谢,之前都在瞎买 一键查询也很方便惹,节省了搜索的时间{:6_163:} {:6_188:}Nice, 方便查询勋章, 便民利好 泥潭的各级勋章名称都不一样,经常在别人头像下面看到挂着的勋章,却要全文搜索才能找得到具体是哪个。
之前Makima老师有开发过一个勋章搜索,原理是点击后按照名称在博物馆全文搜索;而这个脚本则更加生猛,直接用1000多行的映射表把名字一对一映射到博物馆的链接,不通过搜索而是点击直达。
一千多行!很难想象整理出这1000多行各级勋章的名称和对应的帖子地址是多离谱的工作量,大佬辛苦了!https://img.gamemale.com/album/202408/03/102123lu8vgs5u8krdhz28.gif 看似只节省了一小步,实际上却是泥潭的一大步 非常方便,免得去一个一个搜了 好久之前用过类似的脚本,就是点击勋章跳转的,这个工程量很大了可以说,辛苦了楼主,soon好评!{:6_191:} !不会是一个一个自己搞得吧,好大的工作量
我之前做的是根据alt属性搜索
如果按照你的思路,我会写个自动提取博物馆的标题和tid,虽然只有一级的名字,但是也够用了(?) 很方便,不用一个个搜索了 辛苦了,工作量真的很大,好评给你 看起来是升级版勋章搜索脚本 这个我是真的喜欢,直接跳转,对我这种喜欢看版面的xp玩家太便利了 定位传送很方便去查看大佬对勋章的分析呢;P;P 感谢优化,能够直接跳转到博物馆挺方便的:loveliness: 泥潭的良心代码大神还是挺多的
越来越优化,在泥潭玩得越来越开心{:4_102:} 感谢大佬哇,非常利好坛友的脚本惹