BetterYTM.min.user.js 3.0 KB

12
  1. // @license MIT
  2. (()=>{const e=Object.freeze({arrowKeySupport:!0,removeUpgradeTab:!0,switchBetweenSites:!0,removeWatermark:!1}),t=Object.freeze({name:GM.info.script.name,version:GM.info.script.version,namespace:GM.info.script.namespace});function n(){const n=o();"ytm"===n&&(e.arrowKeySupport&&document.addEventListener("keydown",r),e.removeUpgradeTab&&document.querySelector('.ytmusic-nav-bar ytmusic-pivot-bar-item-renderer[tab-id="SPunlimited"]').remove(),e.removeWatermark||function(){const e=document.createElement("a");e.id="betterytm-watermark",e.className="style-scope ytmusic-nav-bar",e.innerText=t.name,e.title=`${t.name} v${t.version}`,e.href=t.namespace,e.target="_blank",e.rel="noopener noreferrer";const n="\n #betterytm-watermark {\n position: absolute;\n left: 45px;\n top: 43px;\n z-index: 10;\n color: white;\n text-decoration: none;\n cursor: pointer;\n }\n\n #betterytm-watermark:hover {\n text-decoration: underline;\n }\n ",r=document.createElement("style");r.id="betterytm-watermark-style",r.styleSheet?r.styleSheet.cssText=n:r.appendChild(document.createTextNode(n));document.querySelector("head").appendChild(r);const o=document.querySelector("#left-content");o.parentNode.insertBefore(e,o.nextSibling)}()),e.switchBetweenSites&&function(e){document.addEventListener("keydown",(t=>{"F9"==t.key&&function(e){console.log(`BYTM/Debug: Switching from domain ${o()} to ${e}`);try{let t;if("ytm"===e?t="music":"yt"===e&&(t="www"),!t)throw new TypeError(`Unrecognized domain '${e}'`);const{pathname:n,search:r,hash:o}=new URL(location.href),a=`https://${t}.youtube.com${n}${r.includes("?")?`${r}&t=${c()}`:`?t=${c()}`}${o}`;console.info(`BetterYTM - switching to domain '${e}' at ${a}`),location.href=a}catch(e){console.error(e instanceof Error?e:new Error(e))}}("yt"===e?"ytm":"yt")}))}(n)}function r(e){if(["ArrowLeft","ArrowRight"].includes(e.code)){const t={altKey:!1,bubbles:!0,cancelBubble:!1,cancelable:!0,charCode:0,composed:!0,ctrlKey:!1,currentTarget:null,defaultPrevented:e.defaultPrevented,explicitOriginalTarget:document.body,isTrusted:!0,metaKey:!1,originalTarget:document.body,repeat:!1,shiftKey:!1,srcElement:document.body,target:document.body,type:"keydown",view:window};let n=!1,r={};switch(e.code){case"ArrowLeft":r={code:"KeyH",key:"h",keyCode:72,which:72};break;case"ArrowRight":r={code:"KeyL",key:"l",keyCode:76,which:76};break;default:n=!0}n||document.body.dispatchEvent(new KeyboardEvent("keydown",{...t,...r}))}}function o(){const{hostname:e}=new URL(location.href);return e.toLowerCase().includes("music")?"ytm":"yt"}function c(){const e=o();try{if("ytm"===e){return document.querySelector("#progress-bar").value??null}return"yt"===e?0:null}catch(e){return console.error("BetterYTM: Couldn't get video time due to error:",e),null}}!function(){try{console.log(`${t.name} v${t.version} - ${t.namespace}`),document.addEventListener("DOMContentLoaded",n)}catch(e){console.error("BetterYTM - General Error:",e)}}()})();