社区文档构建中,欢迎编辑。 社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
全站通知:
用户:16083703/BwikiAvatarFrame.js
刷
历
编
跳到导航
跳到搜索
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
- Opera:按 Ctrl-F5。
var wikiName = mw.config.get('wgScriptPath').replace("/","")
var userId = document.cookie.match(/DedeUserID=([^;]+)/)[1]
// 获取数据
$.ajaxSettings.async = false;
if (sessionStorage.getItem("avatar_"+ wikiName +"_avatarData") == null) {
var avatarDataUrl = "https://wiki.biligame.com/" + wikiName + "/Data:Avatar.json?action=raw";
$.ajax({url:avatarDataUrl,type:'GET',
success:function (obj) {
try{
avatarData= JSON.parse(obj.replace(/(\n|\s)/g,"").replace(/(,])|(,})/g,function(e){return e == ',]' ? "]" : "}"}))
if(typeof(newAvatarData) !== "undefined"){
$.each(newAvatarData,function (index, item){
if(index in avatarData.头衔){
avatarData.头衔[index].boxTop = item.box
$.each(item.tag,function (tagIndex, tagItem) {
if(avatarData.头衔[index].tag.indexOf(tagItem) == -1){
avatarData.头衔[index].tag.push(tagItem)
}
})
}else{
avatarData.头衔[index] = item
}
})
}
}catch(err){
console.error("评论区头衔:请确认用户头衔数据为正确的json格式↓\n",'https://wiki.biligame.com/'+ wikiName +'/Data:Avatar.json\n')
}
sessionStorage.setItem("avatar_"+ wikiName +"_avatarData", JSON.stringify(avatarData));
return avatarData;
},error:function(req, status, err){
console.error("评论区头衔获取头衔相关数据失败:",err)
return avatarData = false
}
});
}else{
var avatarData = JSON.parse(sessionStorage.getItem("avatar_"+ wikiName +"_avatarData"))
}
// 获取用户昵称
if(avatarData !== false){
if (sessionStorage.getItem("avatar_"+ wikiName +"_UserName") == null) {
var userName = {};
function newNameBox(array, subLength) {
var index = 0;
var newArr = [];
while(index < array.length) {
newArr.push(array.slice(index, index += subLength));
}
return newArr;
}
var uuidBox= newNameBox(Object.keys(avatarData.头衔), 50);
var uuidBoxIndex = 0
function getUserName(boxIndex) {
var url = "https://api.vc.bilibili.com/account/v1/user/cards?uids=" + uuidBox[boxIndex].join();
$.getJSON(url, function (obj) {
if(obj.message)console.error("评论区头衔:获取用户昵称:",obj.message)
$.each(obj.data, function (index, item) {
userName[item.mid] = item.name;
});
});
uuidBoxIndex++
if(uuidBoxIndex < uuidBox.length) {
setTimeout("getUserName("+uuidBoxIndex+")",500)
}else{
sessionStorage.setItem("avatar_"+ wikiName +"_UserName", JSON.stringify(userName));
}
}
getUserName(0)
}else{
var userName = JSON.parse(sessionStorage.getItem("avatar_"+ wikiName +"_UserName"))
}
}
// 添加头衔等
var avatarTimeOut = 0;
var commentLoading = setInterval(function () {
avatarTimeOut++
if(avatarData == false){
clearInterval(commentLoading);
console.log("评论区头衔:获取数据失败请刷新页面重试")
}else if ($("#flowthread").length !== 0 && localStorage.getItem("avatarStor_" + wikiName) !== null) {
clearInterval(commentLoading);
avatarFrame(userName,avatarData);
avatarAddSet(avatarData)
} else if (avatarTimeOut> 50) {
// 超时
clearInterval(commentLoading);
}
}, 500);
window.changeFrame = setInterval(function () {
if ($("#avatarFrameShow").length == 0) {
avatarFrame(userName,avatarData);
}
}, 1000);
var avatarFrame = function(userName,avatarData) {
if ($("#avatarFrameShow").length == 0) {
$(".comment-container").prepend('<span id="avatarFrameShow" style="display:none;">评论区自定义头衔等</span>');
}
// 加载data Wiki
mw.loader.getScript("/data/index.php?title=MediaWiki:Api.js&action=raw&ctype=text/javascript", "text/javascript").then(function () {
var nb = new NGBASE()
nb.read("avatarUserData_" + wikiName).then((res) => {
var boxType = res
$(".comment-post .comment-user-name").each(function () {
var that = $(this);
var thisUserName = that.text()
if (Object.values(userName).indexOf(thisUserName) !== -1) {
var thisUserId = Object.keys(userName)[Object.values(userName).indexOf(thisUserName)]
if (Object.keys(res).indexOf(thisUserId) !== -1) {
var url = avatarData.头像框[boxType[thisUserId]];
} else if(avatarData.头衔[thisUserId].boxTop !== undefined){
var url = avatarData.头像框[avatarData.头衔[thisUserId].boxTop[0]];
} else {
var url = avatarData.头像框[avatarData.头衔[thisUserId].box[0]];
}
if (url !== undefined) {
var dom1 = '<img class="avatar-box-frame" src="' + url + '" alt="">';
that.parent().parent().prev().append(dom1);
}
var tag = avatarData.头衔[thisUserId].tag;
if (tag !== undefined) {
var dom2 = $('<div class="tag-box"></div>');
$.each(tag, function (tagIndex, tagItem) {
var spanBg = tagColor(tagItem);
var newTag = '<span style="background:' + spanBg + '">' + tagItem + "</span>";
dom2.append(newTag);
});
that.next().after(dom2);
}
}
})
})
})
}
// 默认头像颜色
var colorData={"#24acf2": ["管理员","数据组","技术组","攻略组","地图组","编辑组","翻译组","考究组","同人组","养老组","美工组","巡查"],"#fcc522": ["页面编辑者","页面贡献者","作者"],"#804ed1": ["站长","前站长"],"#27c309":["全站管理员"]}
// 更改头衔颜色
var tagColor=function (e) {
$.ajaxSettings.async = false;
if (sessionStorage.getItem("avatar_"+ wikiName +"_colorData") == null) {
$.each(avatarData.头衔颜色,function(index,item){
if(index in colorData){
colorData[index].push(...item)
}else{
colorData[index]=item
}
})
sessionStorage.setItem("avatar_"+ wikiName +"_colorData", JSON.stringify(colorData));
}else{
colorData = JSON.parse(sessionStorage.getItem("avatar_"+ wikiName +"_colorData"))
}
var color
var keys=Object.keys(colorData).reverse()
$.each(keys,function(index,item){
if(colorData[item].indexOf(e)!==-1){
color = item
return false
}
})
if(color == undefined) color = "#a7a5a5"
return color
}