// ==UserScript==
// @name 贵物班友会
// @namespace http://tampermonkey.net/
// @version 2.2.0
// @description 贵物班友会(bgm.tv、bangumi.tv、chii.in)
// @author 老悠
// @include https://bgm.tv/*
// @include https://bangumi.tv/*
// @match https://chii.in/*
// @grant GM_addStyle
// @grant GM_getResourceText
// @license MIT
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
GM_addStyle('.dialog { width: 100%; height: 100vh; background-color: rgba(0, 0, 0, 0.5); position: absolute; top: 0; left: 0;line-height: 30px; display: none; } .dialog .container {width: 220px;height: 100px; background-color: #fff;margin: calc((100vh - 100px)/2) auto; position: relative;} .dialog .container .dialog_footer { position: absolute; bottom: 0; } .dialog .container .dialog_footer button {position: relative;left: 50px;display: inline-block;width: 50px;bottom: 10px;} .monster-tooltip {display: none;position: absolute;background-color: #f9f9f9;border: 1px solid #ccc;padding: 5px 10px;border-radius: 5px;font-size: 14px;}')
let yodbUrl="https://ly.syaro.io:380/yodb/api/";
//let yodbUrl="http://192.168.224.134:8080/yodb/";
let myBgmId;
let myBgmId2;
let protocol = window.location.protocol;
let host = window.location.host;
let baseUrl = protocol + '//' + host;
$.get(baseUrl+"/home",function(html,status){
let $html=$(html);
let $avatar=$html.find("#headerProfile .avatar:first");
let tempHtml=$avatar.html();
if(tempHtml){
let bgImgSplit=$avatar.html().split(".jpg")[0].split("/");
let split=$avatar.prop("href").split("/");
myBgmId=split[split.length-1];
myBgmId2=bgImgSplit[bgImgSplit.length-1];
}
let modalHtml='
';
let modalHtml2='';
$('body').append(modalHtml2);
let initModalVal=function(){
let ava=$("#headerProfile a.avatar");
if(!ava){
return;
}
let hrefVal=ava.attr("href");
if(!hrefVal){
return;
}
let newBgmId;
let oldBgmId;
if(hrefVal.indexOf("/user/")>-1){
let split=hrefVal.split("/");
newBgmId=split[split.length-1];
let imgUrl=ava.find("span").css("background-image");
if(imgUrl){
let oldSplit=imgUrl.split("/");
let oldTempSplit=oldSplit[oldSplit.length-1].split(".");
oldBgmId=oldTempSplit[0];
//没有头像无法获得原始bgmId
if(oldBgmId=='icon'){
oldBgmId=newBgmId;
}
}
}
$("#markBgmId").val(newBgmId);
$.get(yodbUrl+'anon/vulgar/monsterScore/detailByBgmId/'+newBgmId+"?newMyBgmId="+myBgmId+"&oldMyBgmId="+myBgmId2, function(res){
if(!res||!res.data){
if(newBgmId!=oldBgmId){
$.get(yodbUrl+'anon/vulgar/monsterScore/detailByBgmId/'+oldBgmId+"?newMyBgmId="+myBgmId+"&oldMyBgmId="+myBgmId2, function(res){
setModalVal(res.data);
});
}
}else{
setModalVal(res.data);
}
});
}
let setModalVal=function(modalData){
$("#markBgmId").val(modalData.monster.bgmId);
$("#markName").val(modalData.name);
$("#markScore").val(modalData.score);
$("#markCont").text(modalData.cont);
}
initModalVal();
let marksModalHtml=''
+'
'
+' '
+'
'
+'
'
+' 全量傻逼备注JSON:
'
+'
'
+'
'
+'
'
+'
'
+'
'
+'
'
+' '
+' '
+'
'
+'
'
+'
';
// $('body').append(marksModalHtml);
let tooltipHtml='无信息
';
$('body').append(tooltipHtml);
$(document).on("mouseenter",".monsterTipBtn",function(e){
var tooltip = $('#monsterTooltip');
let tempBgmId=$(this).attr("bgmId");
let tempMonster=monsterMap[tempBgmId].data;
let tempMyMonster=myMonsterMap[tempBgmId]?myMonsterMap[tempBgmId].data:null;
let tempHtml='';
if(tempMyMonster){
tempMyMonster.color=getColor(tempMyMonster.score);
tempHtml+= '私有标记:
贵物:'+tempMyMonster.name+''+"
"
+'淳朴度:'+tempMyMonster.score+'
'
+'简介:
'
+''+(tempMyMonster.cont?tempMyMonster.cont:'无')+'';
}
if(tempMonster&&tempMonster.name){
if(tempHtml.length>0){
tempHtml+='
';
}
tempHtml+= '公共标记:
贵物:'+tempMonster.name+''+"
"
+'淳朴度:'+tempMonster.score+'
'
+'简介:
'
+''+(tempMonster.cont?tempMonster.cont:'无')+'';
}
if(tempHtml.length>0){
$("#monsterTooltip").html(tempHtml);
}
tooltip.css({
top: e.pageY + 'px',
left: e.pageX + 'px',
display: 'block'
});
});
$(document).on("mouseenter",".cliqueTipBtn",function(e){
var tooltip = $('#monsterTooltip');
let tempCliqueId=$(this).attr("cliqueId");
let tempClique=cliqueMap[tempCliqueId];
let color=getColor(tempClique.score);
let tempHtml= '小圈子:'+tempClique.name+''+"
"
+'淳朴度:'+tempClique.score+'
'
+'简介:
'
+''+(tempClique.cont?tempClique.cont:'无')+'';
$("#monsterTooltip").html(tempHtml);
tooltip.css({
top: e.pageY + 'px',
left: e.pageX + 'px',
display: 'block'
});
});
$(document).on("mouseleave",".monsterTipBtn,.cliqueTipBtn,#monsterTooltip",function(e){
if(!$(e.relatedTarget).is('#monsterTooltip')){
$('#monsterTooltip').hide();
}
});
//$("#headerProfile").find("div.actions").append('添加/修改备注'
// +'批量添加/修改备注');
$("#headerProfile").find("div.actions").append('添加/修改备注');
let id1=$("#headerProfile").find("div.name small.grey").text().replace("@","");
let userMark=localStorage.getItem('userMark');
if(!userMark){
userMark={};
}else{
try{
userMark=JSON.parse(userMark);
} catch(e){
userMark={};
}
}
$("#addMark").click(function(){
$('#markModal').show(1000);
});
$("#addMarks").click(function(){
$("#userMark").val(JSON.stringify(userMark));
$('#marksModal').show(1000);
});
// 确定按钮的操作
$('#markModal .submit').click(function () {
//userMark[id1]={"color":$("#markColor").val(),"mark":$("#markMark").val()};
//let json=JSON.stringify(userMark);
//localStorage.setItem('userMark', json, { expires: 999999999 });
//{"newMyBgmId":myBgmId,"oldMyBgmId":myBgmId2,"name":$("#markName").val(),"score":$("#markScore").val(),"cont":$("#markCont").text()}
//$.post(yodbUrl+'anon/vulgar/monsterScore/save/'+$("#markBgmId").val()+"?newMyBgmId="+myBgmId+"&oldMyBgmId="+myBgmId2+"&name="+$("#markName").val()+"&score="+$("#markScore").val()+"&cont="+$("#markCont").val(),
// function(res){
$.post(yodbUrl+'anon/vulgar/monsterScore/save/'+$("#markBgmId").val(),
{"newMyBgmId":myBgmId,"oldMyBgmId":myBgmId2,"name":$("#markName").val(),"score":$("#markScore").val(),"cont":$("#markCont").val()}, function(res){
if(!res.success){
alert(res.message+"\n"+"未在https://ly.syaro.io:380/注册并绑定bgmId无法使用私有标记功能");
}else{
$('#markModal').fadeToggle(1000);
location.reload();
}
});
});
// 取消按钮的操作
$('#markModal .cancel').click(function () {
$('#markModal').hide(1000)
});
// 批量模态框确定按钮的操作
$('#marksModal .submit').click(function () {
let json=$("#userMark").val();
localStorage.setItem('userMark', json, { expires: 999999999 });
$('#marksModal').fadeToggle(1000);
location.reload();
});
// 批量模态框取消按钮的操作
$('#marksModal .cancel').click(function () {
$('#marksModal').hide(1000)
});
var url = window.location.href;
var urlstr = url.split("/");
var urls = '';
if (urlstr[2]) {
urls = urlstr[0]+'//'+urlstr[2];
}
let allAva=0;
let checkAva=0;
// 外部标记初始化
let initVulgar=function(){
let len=$("a.avatar").length;
allAva=len;
for(let i=0;i 0){
if(monster.color){
$user2.css({"color":monster.color});
}
$user2.addClass("monster");
$user2.after(monsterHtml);
}
if($$user2.length> 0){
if(monster.color){
$$user2.css({"color":monster.color});
}
$user2.addClass("monster");
$$user2.after(monsterHtml);
}
}
checkAva++;
initPost();
}
let getColor=function(score){
let color="black";
if(score==-4||score==-5){
color="red";
}else if(score==-3||score==-2){
color="hotPink";
}else if(score==-1){
color="lightPink";
}else if(score==0){
color="black";
}else if(score==1){
color="lightGreen";
}else if(score==2||score==3){
color="lawnGreen";
}else if(score==4||score==5){
color="green";
}
return color;
}
let getMonsterHtml=function(monster,myMonster,newBgmId){
if(monster){
if(!monster.score){
monster.score=0;
}
let nameColor=getColor(monster.score);
monster.color=nameColor;
let type="";
if(monster.type.field=="SLAVE"){
type=",主号:";
if(monster.masterId){
type+=''+monster.master.name+'';
}else{
type+="未知";
}
}
let mcs="";
if(monster.mcs&&monster.mcs.length>0){
mcs=' ';
let high='';
let middle='';
let low='';
let unknown='';
for(let i=0;i'+mCStatus+'【'+mc.clique.name+'】高级成员,';
}else if(mc.level.field=='MIDDLE'){
middle+=''+mCStatus+'【'+mc.clique.name+'】中级成员,';
}else if(mc.level.field=='LOW'){
low+=''+mCStatus+'【'+mc.clique.name+'】低级成员,';
}else if(mc.level.field=='UNKNOWN'){
unknown+=''+mCStatus+'【'+mc.clique.name+'】成员,';
}
}
mcs+=high+middle+low+unknown;
mcs=mcs.substring(0, mcs.length - 1);
}
let name=monster.name;
if(!name){
if(!myMonster||!myMonster.name){
return '';
}
name=myMonster.name+'[暂无公共标记]';
}
return '('+name+type+')'+mcs+' ';
}else{
return "";
}
}
let monsterMap={};
let myMonsterMap={};
let cliqueMap={};
let initMonster=function(bgmId,newBgmId,judgeInitPost){
if(!bgmId||!newBgmId){
checkAva++;
return;
}
let monster=monsterMap[newBgmId];
if(!monster){
monsterMap[newBgmId]={data:null};
$.get(yodbUrl+'anon/vulgar/monster/vo/detailByBgmId/'+bgmId, function(res){
if(!res||!res.data){
if(newBgmId!=bgmId){
$.get(yodbUrl+'anon/vulgar/monster/vo/detailByBgmId/'+newBgmId, function(res){
monsterMap[newBgmId]=res;
initMyMonster(res.data,bgmId,newBgmId,judgeInitPost);
});
}else{
checkAva++;
initPost();
}
}else{
monsterMap[newBgmId]=res;
initMyMonster(res.data,bgmId,newBgmId,judgeInitPost);
}
});
}else{
checkAva++;
initPost();
}
}
let initMyMonster=function(monsterData,bgmId,newBgmId,judgeInitPost){
let myMonster=myMonsterMap[newBgmId];
if(!myBgmId&&!myBgmId2){
setMonsterHtml(monsterData,null,bgmId,newBgmId,judgeInitPost);
return;
}
if(!myMonster){
myMonsterMap[newBgmId]={data:null};
$.get(yodbUrl+'anon/vulgar/monsterScore/detailByBgmId/'+bgmId+"?newMyBgmId="+myBgmId+"&oldMyBgmId="+myBgmId2, function(res){
if(!res||!res.data){
if(newBgmId!=bgmId){
$.get(yodbUrl+'anon/vulgar/monsterScore/detailByBgmId/'+newBgmId+"?newMyBgmId="+myBgmId+"&oldMyBgmId="+myBgmId2, function(res){
myMonsterMap[newBgmId]=res;
setMonsterHtml(monsterData,res.data,bgmId,newBgmId,judgeInitPost);
});
}else{
setMonsterHtml(monsterData,res.data,bgmId,newBgmId,judgeInitPost);
}
}else{
myMonsterMap[newBgmId]=res;
setMonsterHtml(monsterData,res.data,bgmId,newBgmId,judgeInitPost);
}
});
}
}
let initPost=function(){
if(checkAva!=allAva){
return;
}
let pageHeader=$("#pageHeader");
if(pageHeader.length==1){
let clearits=$("#comment_list .clearit");
let allReply=clearits.length;
let goodReply=0;
let badReply=0;
let littleBadReply=0;
let zeroReply=0;
for(let i=0;i=1){
let score=Number(monsterTipBtn.eq(0).attr("score"));
if(score>0){
goodReply++;
}else if(score<-2){
badReply++;
}else if(score<0&&score>=-2){
littleBadReply++;
}else{
zeroReply++;
}
}else{
zeroReply++;
}
}
let degree=Math.round(badReply/allReply*100);
let html="
总回复数:"+allReply+" 贵物回复数:"+badReply+" 不那么贵物的回复数:"+littleBadReply+" 贵物出现率:"+degree+"%";
pageHeader.find("h1").after(html);
}
}
async function executeAsyncTask() {
await initVulgar();
}
if(!myBgmId&&!myBgmId2){
executeAsyncTask();
return;
}
$.get(yodbUrl+'anon/vulgar/monster/vo/detailByBgmId/'+myBgmId, function(res){
if(!res||!res.data){
if(myBgmId2!=myBgmId){
$.get(yodbUrl+'anon/vulgar/monster/vo/detailByBgmId/'+myBgmId2, function(res){
judgeHome(res.data);
});
}
}else{
judgeHome(res.data);
}
});
let judgeHome=function(monster){
if(!monster.score){
monster.score=0;
}
if(monster.score<=-3){
alert("你也配用我的组件?");
}else{
executeAsyncTask();
}
}
});
})();