Greasy Fork is available in English.
隐藏小蓝B站下载器捐赠页面,优化下载按钮图形和位置
// ==UserScript== // @name 小蓝B站下载器功能优化 // @namespace http://tampermonkey.net/ // @version 3.1 // @description 隐藏小蓝B站下载器捐赠页面,优化下载按钮图形和位置 // @author tutu辣么可# // @include *://*.bilibili.com/video/* // @license MIT // ==/UserScript== (function() { //AddBtn方法用于添加一个新下载图标 function AddBtn(HostObj) { //AddBtnFlag置false,停止循环执行AddBtn方法 AddBtnFlag = false; //获取、创建所需元素 var a = document.getElementsByClassName("ops")[0]; var b = document.createElement("span"); var c = document.createElementNS("http://www.w3.org/2000/svg", "svg"); var d = document.createElementNS("http://www.w3.org/2000/svg", "path"); var e = document.createElement("span"); var f = HostObj.shadowRoot.querySelector("#main"); var g = HostObj.shadowRoot.querySelector("#toggle"); //构建新按钮 b.title = "下载"; b.setAttribute("class", "download"); c.setAttribute("xmlns", "http://www.w3.org/2000/svg"); c.setAttribute("viewBox", "0 0 34 34"); c.style = "width: 34px; height: 34px; left: -3px; top: -3px;"; c.setAttribute("class", "ring-progress"); c.setAttribute("fill", "#757575"); d.setAttribute("d", "M13 8h8v8h-8z M9 16L25 16 17 25z M6 25h22v2h-22z M6 21h2v4h-2z M26 21h2v4h-2z"); e.innerText = "下载"; e.style = "padding-left:34px;color:#505050;"; //改变原页面标题 f.children[0].innerText = "小蓝B站视频下载器(优化版)"; //新按钮加上鼠标悬停/离开/点击功能 b.onmouseover = function() { c.setAttribute("fill", "#00a1d6"); e.style.color = "#00a1d6"; } b.onmouseleave = function() { c.setAttribute("fill", "#757575"); e.style.color = "#505050"; } b.onclick = function() { g.click(); } //在页面上添加新按钮 a.appendChild(b); b.appendChild(c); b.appendChild(e); c.appendChild(d); } //HideFn方法用于隐藏原下载界面相关部分 function HideFn(HostObj) { //运行成功标志 var operation0 = false; var operation1 = false; //从bilibili-helper-host中获取id为side-bar的对象,这个对象就是捐赠部分 var SideBar = HostObj.shadowRoot.querySelector("#side-bar"); //从bilibili-helper-host中获取id为bilibliHelperLogs的对象,这个对象就是日志部分 var HelperLogs = HostObj.shadowRoot.querySelector("#bilibliHelperLogs"); //以防万一,先确认对象存在,再进行下一步 if (SideBar) { //隐藏捐赠部分 SideBar.style.display = "none"; //隐藏成功,运行标志operation0置true operation0 = true; } if (HelperLogs) { //日志宽度重设 HelperLogs.style.width = "100%"; HelperLogs.style.maxWidth = "max-content"; //重设成功,运行标志operation1置true operation1 = true; } //全部操作都成功,HideFnFlag置false,停止循环执行HideFn方法 if (operation0 && operation1) { HideFnFlag = false; } } //隐藏或显示原下载页面 function OriginDisplayStyle(HostObj) { //获取原下载按钮内容 var a = HostObj.shadowRoot.querySelector("#toggle").innerText; //获取原下载页面主体框架 var b = HostObj.shadowRoot.querySelector("#content"); //通过判断原下载按钮内容来显示/隐藏原下载页面 if (a === "收起") { b.style.display = ""; } else { b.style.display = "none"; } } //主程序部分 //运行标志 var HideFnFlag = true; var AddBtnFlag = true; //启动定时器,间隔为200ms var Timer = setInterval(function() { //ID为bilibili-helper-host的元素就是原下载页面部分 var HostObj = document.getElementById("bilibili-helper-host"); //通过判断HostObj是否存在来判断是否启动了相关扩展 if (HostObj) { //循环执行OriginDisplayStyle方法 OriginDisplayStyle(HostObj); //通过HideFnFlag判断是否需要执行HideFn方法 if (HideFnFlag) { HideFn(HostObj); } //通过AddBtnFlag判断是否需要执行AddBtn方法 if (AddBtnFlag) { //视频总时长元素 let LoadFinishFlag = document.getElementsByClassName("bilibili-player-video-time-total")[0]; //只有播放器、视频加载完毕(判断标准:视频总时长元素存在且不为00:00)才执行AddBtn方法 if (LoadFinishFlag && LoadFinishFlag.innerText !== "00:00") { AddBtn(HostObj); } } } }, 200); console.log("小蓝B站下载器功能优化启动(定时器ID:" + Timer + ")"); })();