commit c9b5a9d4fe4104fc4adcc9840a00b8e5a326a67e Author: Akatsuki-Misaki Date: Sat Nov 11 01:56:15 2023 +0800 Update diff --git a/Joysound.js b/Joysound.js new file mode 100644 index 0000000..d817589 --- /dev/null +++ b/Joysound.js @@ -0,0 +1,147 @@ +"use strict" +// ==UserScript== +// @name Joysound视频音效增强 +// @author qianjiachun +// @icon data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjJweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMjIgMjAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+am95c291bmQvc2VsZWN0ZWQ8L3RpdGxlPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSIwJSIgeDI9IjUwJSIgeTI9IjEwMCUiIGlkPSJsaW5lYXJHcmFkaWVudC0xIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0YwQ0I5NSIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRTlCRTgwIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9ImpveXNvdW5kL3NlbGVjdGVkIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0i57yW57uEIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyLjc4NTc1MCwgMC43MTQyMjUpIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTEpIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cGF0aCBkPSJNMTYuNDI4NiwwIEwxNi40Mjg2LDkuNjQzIEMxNi40Mjg2LDE0LjEzNDU1MjcgMTIuODIzMzY2NywxNy43ODQyODggOC4zNDg5MzYxOCwxNy44NTYxNjk2IEw4LjE4NzE4MTUzLDE3Ljg1NzI1NjEgTDguMTg3MTgxNTMsMTcuODU3MjU2MSBMNy44NTcxLDE3Ljg1NzI1NjEgTDcuODU3MTM4OTYsMTcuODQ5NjQxIEMzLjQ5MjM4MDEzLDE3LjY2MjA3NDQgMCwxNC4wNTMxMzQxIDAsOS42NDMwNSBDMCw1LjExMzExNTA1IDMuNjg0NDAwMiwxLjQyODU1IDguMjE0MjUsMS40Mjg1NSBDOS43MDA3OTkxMywxLjQyODU1IDExLjA5NjI5ODUsMS44MjUzNTUwMiAxMi4zMDA0MTUxLDIuNTE4NjIzMzEgQzEyLjc0OTU2ODcsMS4wNjAxNjYwMSAxNC4xMDgyMjM2LDAgMTUuNzE0MzUsMCBMMTYuNDI4NiwwIFogTTguMjE0MjUsMi40Mjg1NSBDNC4yMzY2OTQ5NiwyLjQyODU1IDEsNS42NjUzODk3OCAxLDkuNjQzMDUgQzEsMTMuNTAwNzUwOCA0LjA0NDc3MzgsMTYuNjYxNzMzMyA3Ljg1NzA4ODk5LDE2Ljg0ODU2NjggTDcuODU3MDYyNTQsMTQuNTc1MDE3IEM2Ljc3Mjk4NjcxLDE0LjQ5NzMxMDMgNS43ODQ2MTcxOSwxNC4wNjg3NDc3IDUuMDA1MTgzMTEsMTMuNDAyNTU3OCBMNC45MjI0NzY5NywxMy4zMzAyNzYyIEw0LjgwNDkyNDY4LDEzLjIyMTc5NDEgQzMuODU5Mjk3NTksMTIuMzIwNjI4MyAzLjI2OTI1LDExLjA0OTU0OTYgMy4yNjkyNSw5LjY0MzAyNSBDMy4yNjkyNSw2LjkxNTg4MjYzIDUuNDg3MTA3NjMsNC42OTgwMjUgOC4yMTQyNSw0LjY5ODAyNSBDOS44MTQwMDc1Niw0LjY5ODAyNSAxMS4yMzg0NTI3LDUuNDYxMjEyMzMgMTIuMTQyNzY0NSw2LjY0MjcxMjE1IEwxMi4xNDI3NjQ1LDMuNTk0NjQ0OTEgQzExLjAxMTU4OTYsMi44NTczNjc2NSA5LjY2MTk5NDQ5LDIuNDI4NTUgOC4yMTQyNSwyLjQyODU1IFogTTguMjE0MjUsNS42OTgwMjUgQzYuMDM5MzkyMzcsNS42OTgwMjUgNC4yNjkyNSw3LjQ2ODE2NzM3IDQuMjY5MjUsOS42NDMwMjUgQzQuMjY5MjUsMTEuNjY5NTM3MyA1LjgwNjQ4MjY0LDEzLjM0NDc0OTggNy43NzU4ODgxNSwxMy41NjM1NjcyIEw3Ljg1NzEsMTMuNTcxNSBMOC4yMTQzNSwxMy41NzE1IEMxMC4zNDk2LDEzLjU3MTUgMTIuMDg2ODUsMTEuODY4IDEyLjE0MTYsOS43NDYgTDEyLjE0MjY0NjgsOS42NDMgTDEyLjE0MjY0NjgsOS4yODIzMzIzMyBDMTEuOTU5ODU4NSw3LjI3NTc1MDI2IDEwLjI2NzQ4MjMsNS42OTgwMjUgOC4yMTQyNSw1LjY5ODAyNSBaIE04LjIxNDI1LDcuNTAwMDI1IEM5LjM5NjE5Mjg0LDcuNTAwMDI1IDEwLjM1Nyw4LjQ2MDkzMzA5IDEwLjM1Nyw5LjY0MzAyNSBDMTAuMzU3LDEwLjgyNDkxNzQgOS4zOTYxNDIzNywxMS43ODU3NzUgOC4yMTQyNSwxMS43ODU3NzUgQzcuMDMyMTgyMTUsMTEuNzg1Nzc1IDYuMDcxNSwxMC44MjQ5OTE5IDYuMDcxNSw5LjY0MzAyNSBDNi4wNzE1LDguNDYwODU4NTUgNy4wMzIxMzE2OSw3LjUwMDAyNSA4LjIxNDI1LDcuNTAwMDI1IFogTTguMjE0MjUsOC41MDAwMjUgQzcuNTg0NDYzNDgsOC41MDAwMjUgNy4wNzE1LDkuMDEzMDk2MjcgNy4wNzE1LDkuNjQzMDI1IEM3LjA3MTUsMTAuMjcyNzMwNyA3LjU4NDQ5MDQyLDEwLjc4NTc3NSA4LjIxNDI1LDEwLjc4NTc3NSBDOC44NDM4NTc2MywxMC43ODU3NzUgOS4zNTcsMTAuMjcyNjMyNiA5LjM1Nyw5LjY0MzAyNSBDOS4zNTcsOS4wMTMxOTQzMyA4Ljg0Mzg4NDU3LDguNTAwMDI1IDguMjE0MjUsOC41MDAwMjUgWiIgaWQ9IuW9oueKtiI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+ +// @namespace https://github.com/qianjiachun/joysound-tampermonkey +// @version 2022.05.18.01 +// @description 🎵✨通用网页视频音效增强/优化。Enhance/Optimize video sound in web. +// @match *://*/* +// @include *://*/* +// @connect yximgs.com +// @resource asyncPlayerPlugins https://static.yximgs.com/udata/pkg/acfun-player/asyncPlayerPlugins.b678fa.js +// @grant unsafeWindow +// @grant GM_registerMenuCommand +// @grant GM_xmlhttpRequest +// @grant GM_setValue +// @grant GM_getValue +// @grant GM_getResourceText +// @grant GM_openInTab +// @license MIT +// ==/UserScript== + +let Joysound = null; + +let joysoundList = []; +let hasLoadedJs = false; // 是否已加载js +const LOCAL_NAME = "Ex_isJoysound"; // 是否开启joysound +const LOCAL_JS = "Ex_joysoundJs"; // 本地js代码 +const LOCAL_JS_VERSION = "Ex_joysoundJsVersion"; // 本地js版本号 +const JS_VERSION = "2022.03.21"; // js版本号,如有变动请修改这个值重新获取 + +class CustomJoysound { + constructor(node) { + this.item = new Joysound(); + this.item.init(node); + } + enable() { + this.item.setEnabled(1); + } + disable() { + this.item.setEnabled(0); + } +} + +async function enableJoysound() { + // 开启joysound + if (!hasLoadedJs) { + loadJs(); + } + if (joysoundList.length > 0) { + for (let i = 0; i < joysoundList.length; i++) { + joysoundList[i].setEnabled(1); + } + } else { + let videoNodes = document.querySelectorAll("video"); + for (let i = 0; i < videoNodes.length; i++) { + let item = new Joysound(); + item.init(videoNodes[i]); + item.setEnabled(1); + joysoundList.push(item); + } + if (videoNodes.length <= 0) { + alert("【Joysound音效增强】未找到video元素,可能是在iframe或shadowRoot下"); + } else { + unsafeWindow.AudioContext = null; + unsafeWindow.webkitAudioContext = null; + } + } + localStorage.setItem(LOCAL_NAME, 1); +} + +function disableJoysound() { + for (let i = 0; i < joysoundList.length; i++) { + joysoundList[i].setEnabled(0); + } + localStorage.setItem(LOCAL_NAME, 0); +} + +unsafeWindow.hasInstalledJoysound = true; +unsafeWindow.enableJoysound = enableJoysound; +unsafeWindow.disableJoysound = disableJoysound; +unsafeWindow.getJoysoundByVideoNode = function (node) { + return new CustomJoysound(node); +}; + +GM_registerMenuCommand("开启", enableJoysound); +GM_registerMenuCommand("关闭", disableJoysound); +GM_registerMenuCommand("Github", openGithub); + +function init() { + if (!isEnabledJoysound()) { + return; + } + let count = 0; + let timer = setInterval(() => { + if (hasVideoNode()) { + clearInterval(timer); + enableJoysound(); + } + if (count >= 240) { + clearInterval(timer); + } + count++; + }, 500); +} + +function getJs() { + const STR = "b.safari"; + let ret = GM_getResourceText("asyncPlayerPlugins"); + let index = ret.indexOf(STR) + STR.length + 3; + let js = ret.slice(0, index) + "Joysound=e;" + ret.slice(index); + return js; +} + +function loadJs() { + // 判断有没有加载过js + let js = GM_getValue(LOCAL_JS); + let jsVersion = GM_getValue(LOCAL_JS_VERSION); + if (js && jsVersion == JS_VERSION) { + eval(js); + } else { + let js = getJs(); + GM_setValue(LOCAL_JS, js); + GM_setValue(LOCAL_JS_VERSION, JS_VERSION); + eval(js); + } + hasLoadedJs = true; +} + +function hasVideoNode() { + let videoNodes = document.querySelectorAll("video"); + return videoNodes.length > 0; +} + +function isEnabledJoysound() { + return localStorage.getItem(LOCAL_NAME) == 1; +} + +function openGithub() { + GM_openInTab("https://github.com/qianjiachun/joysound-tampermonkey", { + active: true + }); +} + +(async function () { + init(); +})(); \ No newline at end of file diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000..f236e2c --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,3 @@ +# 这是一个脚本收藏仓库 + +仅保存一些有意思的停更脚本 \ No newline at end of file