小蓝B站下载器功能优化

隐藏小蓝B站下载器捐赠页面,优化下载按钮图形和位置

目前為 2021-09-24 提交的版本,檢視 最新版本

// ==UserScript==
// @name         小蓝B站下载器功能优化
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  隐藏小蓝B站下载器捐赠页面,优化下载按钮图形和位置
// @author       那年那兔那些事
// @include      *://*.bilibili.com/video/*
// ==/UserScript==

(function() {
	function AddBtn(HostObj) {
		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("#toggle");
		var g = document.createElement("button");
		var h = HostObj.shadowRoot.querySelector("#main");

		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.style.display = "none";
		f.parentElement.style.marginTop = "20px";
		f.parentElement.style.marginRight = "20px";
		g.style =
			"border:0 none;border-radius:6px;outline:none;cursor:pointer;background:#00A1D6;color:#fff;padding:10px 20px;display:none";
		g.innerText = "隐藏";
		g.id = "newHideBtn";
		h.children[0].innerText = "小蓝B站视频下载器(优化版)";
		h.parentElement.style.display = "none";
		g.onclick = function() {
			g.style.display = "none";
			f.click();
			h.parentElement.style.display = "none";
		}
		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() {
			f.click();
			h.parentElement.style.display = "";
			g.style.display = "";
		}
		a.appendChild(b);
		b.appendChild(c);
		b.appendChild(e);
		c.appendChild(d);
		if (f.parentElement.childElementCount > 1) {
			for (let i = 1; i < f.parentElement.childElementCount; i++) {
				f.parentElement.children[i].remove();
			}
		}
		f.parentElement.appendChild(g);
		AddBtnFlag = false;
	}
	//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";
			//隐藏成功,返回值置false
			operation0 = true;
		}
		if (HelperLogs) {
			//日志宽度重设
			HelperLogs.style.width = "100%";
			HelperLogs.style.maxWidth = "max-content";
			//重设成功,返回值置false
			operation1 = true;
		}
		if (operation0 && operation1) {
			//全部操作都成功,HideFnFlag置false
			HideFnFlag = false;
		}
	}
	//RunFn()方法用于执行所有功能
	function RunFn(HostObj) {
		//先确认HostObj对象存在,再进行下一步
		if (HostObj) {
			if (HideFnFlag) {
				HideFn(HostObj);
			}
			if (AddBtnFlag) {
				AddBtn(HostObj);
			}
		}
	}

	function RunMonitor(HostObj) {
		//先确认HostObj对象存在,再进行下一步
		if (HostObj) {
			var SideBar = HostObj.shadowRoot.querySelector("#side-bar");
			var HelperLogs = HostObj.shadowRoot.querySelector("#bilibliHelperLogs");
			var DownloadBtn = document.getElementsByClassName("download")[0];
			if (SideBar.style.display !== "none" || HelperLogs.style.width !== "100%" || HelperLogs.style
				.maxWidth !== "max-content") {
				HideFnFlag = true;
				console.log("HideFn运行错误,重启HideFn");
			}
			if (DownloadBtn === undefined) {
				AddBtnFlag = true;
				console.log("AddBtn运行错误,重启AddBtn");
			}
		}
	}

	//运行标志
	var HideFnFlag = true;
	var AddBtnFlag = true;
	var RunMonitorFlag = false;
	//获取id为bilibili-helper-host的对象
	var HostObj;
	//定时器循环,间隔为200ms
	var Timer = setInterval(function() {
		HostObj = document.getElementById("bilibili-helper-host");
		//通过RunMonitorFlag启动运行监控
		if (RunMonitorFlag) {
			RunMonitor(HostObj);
		}
		//只要有一个功能需要运行就运行RunFn
		if (HideFnFlag || AddBtnFlag) {
			RunFn(HostObj);
			//启动运行监控
			RunMonitorFlag = true;
		}
	}, 200);
	console.log("小蓝B站下载器功能优化开始,启动定时器(ID:" + Timer + ")")
	//2s超时
	setTimeout(function() {
		//结束200ms的定时器
		clearInterval(Timer);
		var success = 0;
		var fail = 0;
		if (HideFnFlag) {
			fail += 1;
		} else {
			success += 1;
		}
		if (AddBtnFlag) {
			fail += 1;
		} else {
			success += 1;
		}
		var msg = "小蓝B站下载器功能优化运行结束,释放定时器(ID:" + Timer + "):\n优化成功 " + success + " 个功能,优化失败 " + fail +
			" 个功能";
		console.log(msg);
	}, 5000);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址