// ==UserScript== // @name 哔哩哔哩视频页面常驻显示AV/BV号 // @namespace https://www.ckylin.site/ // @version 0.6 // @description 始终在哔哩哔哩视频页面标题下方显示当前视频号,默认显示AV号,右键切换为BV号,单击弹窗可复制链接 // @author CKylinMC // @match https://www.bilibili.com/video* // @grant unsafeWindow // @require https://greasyfork.org/scripts/405344-ckautoloader/code/CKAutoLoader.js?version=816331 // @license GPLv3 License // @downloadURL none // ==/UserScript== (function(){ window.blblsavInited = false; window.bilibiliShowAV = function () { //if(!window.blblsavInited) return false; //if (!'aid' in window) return false; window.CK_avid = location.href.split("/video/")[1].split("/?")[0].split("/")[0].split("?")[0].split("#")[0]; if(window.CK_avid.toLowerCase().indexOf("bv")==0){ window.CK_avid = window.CK_bv2av(window.CK_avid)+""; if(window.CK_avid.toLowerCase().indexOf("av")==-1){ window.CK_avid = "av"+window.CK_avid; } } var av_root = document.querySelector(".video-data"); if (!av_root) return false; var av_span = document.querySelector("#bilibiliShowAV"); if(!av_span) { av_span = document.createElement("span"); av_span.id = "bilibiliShowAV"; av_span.style.marginLeft = "16px"; av_root.appendChild(av_span); } av_span.innerText = window.CK_avid; av_span.onclick = function(e){prompt("当前视频地址:", "https://www.bilibili.com/video/"+e.target.innerText)}; av_span.oncontextmenu = function(e){ if (e.target.innerText == window.CK_avid) { e.target.innerText = window.CK_av2bv(window.CK_avid); } else { e.target.innerText = window.CK_avid; } return false; } return true; } window.CK_bv2av = function(x){ // 修改自:https://www.v2ex.com/t/655569 var table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF", tr = new Object(); for (var i = 0; i < 58; i++) { tr[table[i]] = i; } var s = [11, 10, 3, 8, 4, 6], xor = 177451812, add = 8728348608; var r = 0; for (var i = 0; i < 6; i++) { r += tr[x[s[i]]] * 58 ** i; } return (r - add) ^ xor; } window.CK_av2bv = function(x){ // 修改自:https://www.v2ex.com/t/655569 var table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF", tr = new Object(); for (var i = 0; i < 58; i++) { tr[table[i]] = i; } var s = [11, 10, 3, 8, 4, 6], xor = 177451812, add = 8728348608; var r = 0; x = (x ^ xor) + add; r = "BV1 4 1 7 ".split(""); for (var i = 0; i < 6; i++) { r[s[i]] = table[Math.floor(x / 58 ** i) % 58]; } return r.join(""); } window.CK_ShowAV_detecter = function (){ setTimeout(function(){ window.blblsavInited = true; window.bilibiliShowAV(); window.lastHref = location.href; setInterval(function(){if(window.lastHref!=location.href){window.lastHref=location.href;window.bilibiliShowAV();}},1000); },500); } window.CKAutoLoader.reg("ShowAV",window.CK_ShowAV_detecter); })()