// ==UserScript== // @name Bilibili 账号已注销修正 // @namespace http://tampermonkey.net/ // @version 3.0.0 // @author Kaesinol // @description 修正Bilibili 账户已注销的主页链接,修改为 https://www.bilibili.com/list/$UID // @license MIT // @icon https://www.gstatic.com/android/keyboard/emojikitchen/20220506/u1f47b/u1f47b_u1f5d1-ufe0f.png // @match https://*.bilibili.com/* // @require https://cdn.jsdelivr.net/npm/query-selector-shadow-dom@1.0.1/dist/querySelectorShadowDom.js // @grant none // @run-at document-end // ==/UserScript== !function(query_selector_shadow_dom){'use strict';function makeLinkPreview(el,url){el.style.position="relative";const proxy=document.createElement("span");proxy.style.cssText="position:absolute;top:0;left:0;width:100%;height:100%;display:block;cursor:pointer;zIndex:10;",proxy.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),window.open(url,"_blank","noopener,noreferrer")}),el.appendChild(proxy)}function getLegacyText(el){return(el.text??el.textContent??"").toString()}function setLegacyText(el,value){el.text=value,el.textContent=value}function isDeadUsername(text){const trimmed=text.trim();return"账号已注销"===trimmed||"@账号已注销"===trimmed}function uidToShortId(n){let value=BigInt(n),result="";for(;value>0n;)result="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"[Number(value%64n)]+result,value/=64n;return result||"A"}function annotateElements(elements){for(const tag of elements)annotateElement(tag)}function annotateElement(tag,matchText=getLegacyText(tag).trim(),uidGetter=getHrefUid){const uid=uidGetter(tag);uid&&(function(tag,matchText,shortId){const originalText=getLegacyText(tag);originalText.includes(matchText)?setLegacyText(tag,originalText.replace(matchText,matchText+shortId)):setLegacyText(tag,originalText.trim()+shortId)}(tag,matchText,uidToShortId(uid)),function(tag){tag.scrollWidth<=tag.clientWidth&&tag.scrollHeight<=tag.clientHeight||(tag.title=tag.textContent??"",(tag.textContent??"").includes(" · ")&&(tag.textContent=(tag.textContent??"").replace(/ · 收藏于\d+-\d+-\d+$/,"")))}(tag),function(tag,time){tag.title.includes("注册时间推测")||(tag.title=tag.title?`${tag.title}\n注册时间推测: ${time}`:`注册时间推测: ${time}`)}(tag,function(uid){const uidStr=String(uid),n=BigInt(uidStr),len=uidStr.length;if(15===len||16===len)return"≈ 2022-03-21 之后(15/16位UID时代)";if(10===len)return"≈ 2020-10-29 之后(10位UID时代)";for(const[min,max,date]of REG_TIME_RANGES)if(n>=min&&n<=max)return date;return"未知时间"}(uid)),function(tag,uid){tag.href=`https://www.bilibili.com/list/${uid}`}(tag,uid))}function annotateElementsWithMatchText(elements,matchText,uidGetter=getHrefUid){for(const tag of elements)annotateElement(tag,matchText,uidGetter)}function handleElement(tag,handleFunc,textGetter=getDefaultMatchText,uidGetter=getHrefUid){if(handleFunc)return void handleFunc(tag,textGetter,uidGetter);const str=textGetter(tag).trim();isDeadUsername(str)&&(tag.style.fontStyle="italic",uidGetter(tag)&&annotateElementsWithMatchText([tag],str,uidGetter))}function processComments(startElements=document.querySelectorAll("bili-comments")){for(const startElement of startElements){const threads=(0,query_selector_shadow_dom.querySelectorAllDeep)("bili-comment-thread-renderer:not([data-bilifix-processed])",startElement);for(const thread of threads){const targets=(0,query_selector_shadow_dom.querySelectorAllDeep)('#user-name a, a[data-type="mention"], bili-comment-replies-renderer, a#user-avatar',thread);let repliesRenderer=null;for(let k=0;k{handleElement(el,handleFunc,textGetter,uidGetter)})}}var getDefaultMatchText=tag=>getLegacyText(tag),getFirstSegmentMatchText=tag=>getLegacyText(tag).split(" ").filter(s=>""!==s.trim())[0]??"",REG_TIME_RANGES=[[1n,15n,"2009-06-24"],[16n,20n,"2009-06-25"],[21n,23n,"暂无资料"],[24n,25n,"2009-06-26"],[26n,26n,"2009-06-28"],[27n,27n,"2009-06-29"],[28n,29n,"2009-07-06"],[30n,83n,"2009-07-09"],[84n,84n,"2009-07-11"],[85n,91n,"2009-07-12"],[92n,528n,"2009-07-13"],[529n,1543n,"2009-07-14"],[1544n,5697n,"2009-07-15 ~ 2009-12-13"],[5698n,5707n,"2009-12-14"],[5708n,5711n,"2009-12-15"],[5712n,5714n,"2009-12-16"],[5715n,9999n,"2010-01-01 ~ 2010-02-05"],[10000n,44186n,"2010-02-05 ~ 2010-06-25"],[44187n,78765n,"2010-06-26 ~ 2010-12-23"],[78766n,99999n,"2011-01-03 ~ 2011-02-03"],[100001n,259332n,"2011-02-03 ~ 2011-12-16"],[259333n,680417n,"2012-01-01 ~ 2012-12-26"],[680418n,960021n,"2013-01-01 ~ 2013-05-02"],[1111111n,2954623n,"2013-05-02 ~ 2013-12-31"],[2954624n,7532842n,"2014-01-01 ~ 2014-12-31"],[7532843n,9999999n,"2015-01-01 ~ 2015-05-01"],[10000000n,20593642n,"2015-05-01 ~ 2015-12-31"],[20593643n,73886290n,"2016-01-01 ~ 2016-12-31"],[73886291n,99999999n,"2017-01-01 ~ 2017-03-31"],[100000000n,272960616n,"2017-03-31 ~ 2017-12-31"],[272960617n,393942207n,"2018-01-01 ~ 2018-12-31"],[393942208n,490696435n,"2019-01-01 ~ 2019-12-31"],[490696436n,703223216n,"2020-01-01 ~ 2020-10-29"]],getHrefUid=tag=>(tag.href?.match(/\/(\d+)\??/)??null)?.[1],TARGET_MENTION="@账号已注销",LINK_RULES={"space.bilibili.com/\\d+/favlist":{query:"div.bili-video-card__subtitle a",textGetter:getFirstSegmentMatchText},"space.bilibili.com/\\d+/relation/*":{query:"a.relation-card-info__uname",textGetter:getFirstSegmentMatchText},"www.bilibili.com/(video|list)/":{handleFunc:(tag,textGetter=getDefaultMatchText,uidGetter=getHrefUid)=>{const str=textGetter(tag).trim();if(!isDeadUsername(str))return;tag.style.fontStyle="italic";const uid=uidGetter(tag);uid&&(annotateElementsWithMatchText([tag],str,uidGetter),makeLinkPreview(tag,`https://www.bilibili.com/list/${uid}`))},query:[".up-detail-top a","a.staff-name","div.basic-desc-info a.mention-user"],requirePolling:!0},"search.bilibili.com":{query:".bili-video-card__info--owner",textGetter:getFirstSegmentMatchText},"www.bilibili.com/opus/\\d+":{handleFunc:(tag,textGetter=getDefaultMatchText,uidGetter=getHrefUid)=>{const str=textGetter(tag).trim();isDeadUsername(str)&&(tag.style.fontStyle="italic",function(tag,displayText,uidGetter=getHrefUid){const uid=uidGetter(tag);if(!uid)return;const targetUrl=`https://www.bilibili.com/list/${uid}`;makeLinkPreview(tag,targetUrl),tag.addEventListener("click",e=>{e.preventDefault(),window.open(targetUrl,"_blank")},{capture:!0});const nameEl=tag.querySelector(".opus-module-author__name");if(nameEl){const newText=displayText+uidToShortId(uid);nameEl.text=newText,nameEl.textContent=newText}tag.setAttribute("data-bilifix-processed","true")}(tag,str,uidGetter))},query:".opus-module-author:not([data-bilifix-processed])",textGetter:getFirstSegmentMatchText,uidGetter:()=>{const state=window.__INITIAL_STATE__?.detail;return state?.basic?.uid??state?.modules?.find(m=>m.module_author)?.module_author?.mid}}};window.addEventListener("biliFix:request-api",e=>{"function"==typeof e.detail&&e.detail({annotateElements:annotateElements})}),processLinks(),processComments(),setInterval(()=>{processComments(),processLinks(!0)},2e3)}(querySelectorShadowDom);