aboutsummaryrefslogtreecommitdiff
path: root/youtube
diff options
context:
space:
mode:
authorTimmy Keller <tjk@tjkeller.xyz>2024-08-10 19:34:54 -0500
committerTimmy Keller <tjk@tjkeller.xyz>2024-08-10 19:34:54 -0500
commit5cd7617d4467693feced81b440eee8782aebdb02 (patch)
tree68a854bc69f9ee16eedd82d83fb0d091795f6bc4 /youtube
downloaduserscripts-5cd7617d4467693feced81b440eee8782aebdb02.tar.xz
userscripts-5cd7617d4467693feced81b440eee8782aebdb02.zip
initial commit
Diffstat (limited to 'youtube')
-rw-r--r--youtube/disable-mini-player.js31
-rw-r--r--youtube/piped-button.js79
-rw-r--r--youtube/remove-home-shorts.js62
3 files changed, 172 insertions, 0 deletions
diff --git a/youtube/disable-mini-player.js b/youtube/disable-mini-player.js
new file mode 100644
index 0000000..da8349c
--- /dev/null
+++ b/youtube/disable-mini-player.js
@@ -0,0 +1,31 @@
+// ==UserScript==
+// @name Disable YouTube Miniplayer
+// @author tjkeller.xyz
+// @include *youtube.com*
+// @grant GM_addStyle
+// ==/UserScript==
+
+// Remove home and shorts button
+GM_addStyle(`
+ ytd-miniplayer,
+ .ytp-miniplayer-button
+ {
+ display: none !important; /* Needs !important flag */
+ }
+`)
+
+
+// Pause video before navigating
+document.body.addEventListener("yt-navigate-start", () => {
+ if (window.location.pathname == "/watch")
+ document.querySelector("ytd-player video").pause()
+})
+
+// Close miniplayer by clicking close button in code
+document.body.addEventListener("yt-navigate-finish", () => {
+ setTimeout(() => {
+ const miniplayerCloseButton = document.querySelector("button.ytp-miniplayer-close-button")
+ if (miniplayerCloseButton)
+ miniplayerCloseButton.click()
+ }, 500) // Wait 500ms to close consistantly since miniplayer loads a little after this event
+})
diff --git a/youtube/piped-button.js b/youtube/piped-button.js
new file mode 100644
index 0000000..fd4b331
--- /dev/null
+++ b/youtube/piped-button.js
@@ -0,0 +1,79 @@
+// ==UserScript==
+// @name Piped Button youtube.com
+// @namespace Violentmonkey Scripts
+// @match https://www.youtube.com/*
+// @grant GM_addStyle
+// @version 1.0
+// @author -
+// @description 3/9/2024, 8:38:47 PM
+// ==/UserScript==
+
+/* Config */
+const instanceHostname = "piped.tjkeller.xyz"
+const instanceProtocol = "https:"
+const instanceIconLogo = "/img/icons/logo.svg"
+
+const instanceUrl = `${instanceProtocol}//${instanceHostname}`
+
+const redirectButtonId = "piped-button"
+
+GM_addStyle(`
+ a#${redirectButtonId} button {
+ background-color: #272727;
+ border-radius: 18px;
+ border: none;
+ color: white;
+ cursor: pointer;
+ display: flex;
+ font-family: "Roboto","Arial",sans-serif;
+ font-weight: 500;
+ height: 36px;
+ padding: .25em 1em .25em .65em;
+ text-decoration: none;
+ }
+ a#${redirectButtonId} button:hover { background-color: #3f3f3f; }
+ a#${redirectButtonId} button * { align-self: center; max-height: 100%; }
+`)
+
+
+function newUrl() {
+ return `${instanceProtocol}//${instanceHostname}${document.location.pathname}${document.location.search}`
+}
+
+if (!document.getElementById(redirectButtonId)) {
+ const redirectButton = document.createElement("a")
+ const redirectButtonC = redirectButton.appendChild(document.createElement("button"))
+ const redirectButtonImg = redirectButtonC.appendChild(document.createElement("img"))
+ const redirectButtonTxt = redirectButtonC.appendChild(document.createElement("span"))
+ redirectButton.id = redirectButtonId
+ redirectButtonImg.src = instanceUrl + instanceIconLogo
+ redirectButtonImg.alt = "(Down)" // Logo effectively acts as a test to see whether the instance is up or not as a bonus
+ redirectButtonTxt.innerText = "Piped"
+
+ redirectButton.addEventListener("mouseover", () => { redirectButton.href = newUrl() })
+
+ /* Insert */
+ document.body.addEventListener("yt-navigate-finish", () => {
+
+ setTimeout(() => {
+ const headContainer = document.querySelector("#masthead-container #container #start")
+ headContainer.appendChild(redirectButton)
+ /*
+ const actionDiv = document.querySelector("#actions #menu")
+
+ const pipedLink = actionDiv.appendChild(document.createElement("a"))
+ pipedLink.id = "piped"
+ pipedLink.href = `${document.location.protocol}//${pipedInstance}${document.location.pathname}${document.location.search}`
+
+ const pipedButton = pipedLink.appendChild(document.createElement("button")) // Simplify styling
+
+ const pipedLogo = pipedButton.appendChild(document.createElement("img"))
+ pipedLogo.src = `${document.location.protocol}//${pipedInstance}/img/icons/logo.svg`
+ pipedLogo.alt = "(Down)" // Indicates instance is down if logo cannot be loaded
+
+ const pipedText = pipedButton.appendChild(document.createElement("span"))
+ pipedText.innerText = "Piped"
+ */
+ }, 500) // Wait 500ms for page load to finish after event called
+ })
+}
diff --git a/youtube/remove-home-shorts.js b/youtube/remove-home-shorts.js
new file mode 100644
index 0000000..a5e3634
--- /dev/null
+++ b/youtube/remove-home-shorts.js
@@ -0,0 +1,62 @@
+// ==UserScript==
+// @name Remove youtube home and shorts
+// @namespace Violentmonkey Scripts
+// @include *youtube.com*
+// @grant GM_addStyle
+// @version 1.0
+// @author tjk918
+// @description 9/21/2023, 9:44:13 AM
+// @license MIT
+// ==/UserScript==
+
+
+// Remove home and shorts button
+GM_addStyle(`
+ tp-yt-app-drawer a[title=Home],
+ tp-yt-app-drawer a[title=Shorts],
+ ytd-mini-guide-renderer a[title=Home],
+ ytd-mini-guide-renderer a[title=Shorts]
+ {
+ display: none !important; /* Needs !important flag */
+ }
+`)
+
+
+// Subscriptions page is new homepage
+const subscriptionsPath = "/feed/subscriptions"
+
+function redirectToSubscriptions() {
+ // Invoke clicking the subscriptions button to use youtube's hot page reloading if possible instead of reloading the whole page
+ const subscriptionsButton = document.querySelector("tp-yt-app-drawer a[title=Subscriptions]")
+ if (subscriptionsButton)
+ subscriptionsButton.click()
+ else
+ window.location.replace(subscriptionsPath)
+}
+
+
+// Redirect to new homepage
+function redirectIfHome() {
+ if (window.location.pathname === "/")
+ redirectToSubscriptions()
+}
+
+redirectIfHome()
+window.addEventListener("popstate", redirectIfHome)
+//document.body.addEventListener("yt-navigate-finish", redirectIfHome)
+
+
+// Youtube logo navigate to subscriptions
+/* Needs to be done safely in case youtube changes and also because it throws
+ * an error otherwise because violentmonkey seems to load the script twice */
+
+const logo = document.querySelector("#logo a")
+if (logo) {
+ logo.href = subscriptionsPath
+ logo.addEventListener("click", e => {
+ // Seems there is an event listener that forces redirect to site root, so stop that first
+ e.stopPropagation()
+ e.preventDefault()
+ redirectToSubscriptions()
+ })
+}