aboutsummaryrefslogtreecommitdiff
path: root/youtube/piped-button.user.js
blob: 60cd7f2d3cddfa5b1d6afac73ef3f5b64b9d586a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// ==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)
		}, 500) // Wait 500ms for page load to finish after event called
	})
}