aboutsummaryrefslogtreecommitdiff
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
downloaduserscripts-5cd7617d4467693feced81b440eee8782aebdb02.tar.xz
userscripts-5cd7617d4467693feced81b440eee8782aebdb02.zip
initial commit
-rw-r--r--usps/fill-out-usps-scheduled-pickup.js107
-rw-r--r--youtube/disable-mini-player.js31
-rw-r--r--youtube/piped-button.js79
-rw-r--r--youtube/remove-home-shorts.js62
4 files changed, 279 insertions, 0 deletions
diff --git a/usps/fill-out-usps-scheduled-pickup.js b/usps/fill-out-usps-scheduled-pickup.js
new file mode 100644
index 0000000..88660fc
--- /dev/null
+++ b/usps/fill-out-usps-scheduled-pickup.js
@@ -0,0 +1,107 @@
+// ==UserScript==
+// @name Fill out usps scheduled pickup
+// @namespace Violentmonkey Scripts
+// @match https://tools.usps.com/schedule-pickup-steps.htm*
+// @grant none
+// @version 1.0
+// @author -
+// @description 2/11/2024, 7:23:34 PM
+// ==/UserScript==
+
+/* First page config */
+const fill = {
+ emailAddress: "youremail@example.com",
+ phoneNumber: "777-777-7777",
+ zipCode: "60606",
+ state: "IL",
+ city: "CHICAGO",
+ addressLineOne: "701 My Lovely Home St.",
+ lastName: "Smith",
+ firstName: "John"
+}
+
+/* Misc config */
+const packageLocationFill = "Porch"
+
+/* Fill funcs */
+function fillInitialFields() {
+ for (let fieldName in fill)
+ document.getElementById(fieldName).value = fill[fieldName]
+}
+
+function fillDogField() {
+ const f = document.querySelector("#second-radio-verification[name=isDogHere]")
+ f.checked = true
+ return f
+}
+
+function fillPackageLocation() {
+ const f = document.getElementById("packageLocation")
+ f.value = packageLocationFill
+ return f
+}
+
+function fillPickupTime() {
+ const f = document.getElementById("pickup-regular-time")
+ f.click()
+ return f
+}
+
+function fillPickupDate() {
+ const f = document.querySelector("#schedule-pickup-cal td:not(.ui-datepicker-unselectable)") // Gets first date that is selectable
+ f.click()
+ return f
+}
+
+function fillTerms() {
+ const f = document.querySelector(".termsConditions")
+ f.checked = true
+ return f
+}
+
+function fillHazmat() {
+ const f = document.querySelector("#hazmat-no")
+ f.checked = true
+ return f
+}
+
+function scrollToDetails() {
+ document.getElementById("quantityCheck").scrollIntoView()
+}
+
+function showPickupDateInStepFour(pickupDateTD) {
+ const month = parseInt(pickupDateTD.dataset.month) + 1
+ const year = pickupDateTD.dataset.year
+ const day = pickupDateTD.firstElementChild.innerText
+
+ const date = `${month}-${day}-${year}`
+
+ const dateElement = document.createElement("div")
+ dateElement.class = "step-four-top-header"
+ dateElement.innerHTML = `<p class="step-four-row-header"></p>`
+ dateElement.innerHTML += `<p class="step-four-row-header" style="font-weight:bold;">Date of Pickup: ${date}</p>`
+
+ const container = document.querySelector("div.pickup-summary-gray-box-wrapper div")
+ const sibiling = container.querySelector("div.step-four-top-header")
+ container.insertBefore(dateElement, sibiling)
+ return dateElement
+}
+
+/* Start */
+fillInitialFields()
+
+document.querySelector("#webToolsAddressCheck").addEventListener("click", () => {
+ const magicChange = new Event("change")
+
+ fillDogField() .dispatchEvent(magicChange)
+ fillPackageLocation().dispatchEvent(magicChange)
+
+ fillPickupTime() // Works through click
+
+ setTimeout(() => {
+ showPickupDateInStepFour(fillPickupDate()) // Need to wait for this (calendar) to load in first since it's loaded dynamically
+ fillHazmat()
+ fillTerms()
+ scrollToDetails()
+ }, 750)
+})
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()
+ })
+}