您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自動ミュート
// ==UserScript== // @name cytube_auto_mute // @namespace https://cytube.xyz/ // @version 0.1 // @description 自動ミュート // @author utubo // @match *://cytube.xyz/* // @grant none // ==/UserScript== (window.unsafeWindow || window).eval(` (function() { // 設定 ------------------------------------ // ミュートにするユーザー名 var MUTE_USER = ['xxxxx', 'yyyyy']; // ※もしかしたらスクリプトの自動更新をONにしてると更新したときに設定が消えちゃうかも // ----------------------------------------- // 本体 ------------------------------------ // jsが再読込されると多分2重で動いちゃうので既にobseverが存在してたら破棄する var win = window.unsafeWindow || window; var obsever = win.GM_AUTO_MUTE_OBSERVER; if (obsever) { obsever.disconnect(); } // currentTitleが変更されたらユーザー名を判定する var isAutoMuted = false; var lastVolume = 0.0; var getVolume = () => new Promise((resolve, reject) => { PLAYER.getVolume(resolve); }); var setVolume = v => setTimeout(() => { PLAYER.setVolume(v);}, 500); var autoMute = async () => { var current = document.getElementsByClassName('queue_active')[0]; if (!current) return; var user = current.getAttribute('title').replace('Added by: ', ''); if (MUTE_USER.includes(user)) { isAutoMuted = true; lastVolume = await getVolume() || lastVolume; setVolume(0); } else if (isAutoMuted) { isAutoMuted = false; if (lastVolume) setVolume(lastVolume); } }; obsever = new MutationObserver(autoMute); obsever.observe(document.getElementById('currenttitle'), { childList: true }); win.GM_AUTO_MUTE_OBSERVER = obsever; })(); `);