diff options
-rw-r--r-- | usps/fill-out-usps-scheduled-pickup.js | 107 | ||||
-rw-r--r-- | youtube/disable-mini-player.js | 31 | ||||
-rw-r--r-- | youtube/piped-button.js | 79 | ||||
-rw-r--r-- | youtube/remove-home-shorts.js | 62 |
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() + }) +} |