most of my current greasemonkey scripts
This commit is contained in:
parent
a32df404a6
commit
e53b138cce
110
greasemonkey/725984.js
Normal file
110
greasemonkey/725984.js
Normal file
@ -0,0 +1,110 @@
|
||||
// ==UserScript==
|
||||
// @name 725984
|
||||
// @version 1
|
||||
// @grant none
|
||||
// @include /^https?://([^\.]*\.)?twitch\.tv/(moderator/)?[^/]+$/
|
||||
// @description auto claim active bonus. should probably keep this secret?
|
||||
// ==/UserScript==
|
||||
|
||||
var reportToast = document.createElement("div");
|
||||
reportToast.id = "snackbar";
|
||||
var summaryObject = null;
|
||||
var claimInterval = -1;
|
||||
var summarySearch = setInterval(() => {
|
||||
popToast("725984 is alive");
|
||||
//reportToast.appendChild(document.createTextNode());
|
||||
//document.body.appendChild(reportToast);
|
||||
//reportToast.className = "show";
|
||||
console.log("725984 survived most of init");
|
||||
setInterval(function(){ reportToast.className = reportToast.className.replace("show", ""); }, 3000);
|
||||
|
||||
summaryObject = document.querySelector(".community-points-summary");
|
||||
if(summaryObject !== null){
|
||||
popToast("725984: online");
|
||||
clearInterval(summarySearch);
|
||||
claimInterval = setTimeout(claim, 1000 + Math.random() * 1000);
|
||||
summaryObject.insertBefore(document.createTextNode("🟢"), summaryObject.firstChild)
|
||||
} else {
|
||||
console.log("725984: not ready");
|
||||
popToast("725984: not ready");
|
||||
}
|
||||
}, 5000);
|
||||
|
||||
function claim(){
|
||||
//look for claim. if found:
|
||||
|
||||
summaryObject.querySelectorAll("button").forEach((elem) => {
|
||||
//console.log(Date());
|
||||
let claimability = elem.querySelector(".claimable-bonus__icon");
|
||||
if(claimability !== null){
|
||||
console.log("725984: in motion");
|
||||
if(Math.random() < 0.1){
|
||||
popToast("725984 claims");
|
||||
elem.click();
|
||||
}else{
|
||||
popToast("725984 abstains");
|
||||
}
|
||||
}
|
||||
clearTimeout(claimInterval);
|
||||
claimInterval = setTimeout(claim, 1000 + Math.random() * 1000);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function popToast(msg){
|
||||
console.log(msg);
|
||||
reportToast.innerHTML = "";
|
||||
reportToast.appendChild(document.createTextNode(msg));
|
||||
reportToast.className = "show";
|
||||
}
|
||||
|
||||
let newStyle = document.createElement("style");
|
||||
newStyle.setAttribute("type", "text/css");
|
||||
newStyle.textContent = `
|
||||
#snackbar {
|
||||
visibility: hidden; /* Hidden by default. Visible on click */
|
||||
min-width: 250px; /* Set a default minimum width */
|
||||
margin-left: -125px; /* Divide value of min-width by 2 */
|
||||
background-color: #333; /* Black background color */
|
||||
color: #fff; /* White text color */
|
||||
text-align: center; /* Centered text */
|
||||
border-radius: 2px; /* Rounded borders */
|
||||
padding: 16px; /* Padding */
|
||||
position: fixed; /* Sit on top of the screen */
|
||||
z-index: 1; /* Add a z-index if needed */
|
||||
right: 30px; /* near the right; where you'll be looking (probably) */
|
||||
bottom: 30px; /* 30px from the bottom */
|
||||
}
|
||||
|
||||
/* Show the snackbar when clicking on a button (class added with JavaScript) */
|
||||
#snackbar.show {
|
||||
visibility: visible; /* Show the snackbar */
|
||||
/* Add animation: Take 0.5 seconds to fade in and out the snackbar.
|
||||
However, delay the fade out process for 2.5 seconds */
|
||||
-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
|
||||
animation: fadein 0.5s, fadeout 0.5s 2.5s;
|
||||
}
|
||||
|
||||
/* Animations to fade the snackbar in and out */
|
||||
@-webkit-keyframes fadein {
|
||||
from {bottom: 0; opacity: 0;}
|
||||
to {bottom: 30px; opacity: 1;}
|
||||
}
|
||||
|
||||
@keyframes fadein {
|
||||
from {bottom: 0; opacity: 0;}
|
||||
to {bottom: 30px; opacity: 1;}
|
||||
}
|
||||
|
||||
@-webkit-keyframes fadeout {
|
||||
from {bottom: 30px; opacity: 1;}
|
||||
to {bottom: 0; opacity: 0;}
|
||||
}
|
||||
|
||||
@keyframes fadeout {
|
||||
from {bottom: 30px; opacity: 1;}
|
||||
to {bottom: 0; opacity: 0;}
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(newStyle);
|
||||
document.body.appendChild(reportToast);
|
40
greasemonkey/Feed icon link.js
Normal file
40
greasemonkey/Feed icon link.js
Normal file
@ -0,0 +1,40 @@
|
||||
// ==UserScript==
|
||||
// @name Feed icon link
|
||||
// @version 1
|
||||
// @grant none
|
||||
// @description youtube does publish rss feeds. But it's not the easiest thing in the world to find.
|
||||
// @include /^https?://(www\.)?youtube.com\/watch\?/
|
||||
// @namespace adamrgrey.com
|
||||
// @license MIT
|
||||
// ==/UserScript==
|
||||
|
||||
//from wikipedia: https://en.wikipedia.org/wiki/File:Feed-icon.svg, but it's gnu.
|
||||
let svgsrc = `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32px" height="32px" id="RSSicon" viewBox="0 0 256 256">
|
||||
<defs>
|
||||
<linearGradient x1="0.085" y1="0.085" x2="0.915" y2="0.915" id="RSSg">
|
||||
<stop offset="0.0" stop-color="#E3702D"/><stop offset="0.1071" stop-color="#EA7D31"/>
|
||||
<stop offset="0.3503" stop-color="#F69537"/><stop offset="0.5" stop-color="#FB9E3A"/>
|
||||
<stop offset="0.7016" stop-color="#EA7C31"/><stop offset="0.8866" stop-color="#DE642B"/>
|
||||
<stop offset="1.0" stop-color="#D95B29"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="256" height="256" rx="55" ry="55" x="0" y="0" fill="#CC5D15"/>
|
||||
<rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/>
|
||||
<rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#RSSg)"/>
|
||||
<circle cx="68" cy="189" r="24" fill="#FFF"/>
|
||||
<path d="M160 213h-34a82 82 0 0 0 -82 -82v-34a116 116 0 0 1 116 116z" fill="#FFF"/>
|
||||
<path d="M184 213A140 140 0 0 0 44 73 V 38a175 175 0 0 1 175 175z" fill="#FFF"/>
|
||||
</svg>
|
||||
`.trim();
|
||||
|
||||
|
||||
setTimeout(() => {
|
||||
let feedLink = document.createElement("a");
|
||||
feedLink.setAttribute("href", "https://www.youtube.com/feeds/videos.xml?channel_id=" + document.body.querySelector("meta[itemprop=channelId]").content);
|
||||
feedLink.innerHTML = svgsrc;
|
||||
document.querySelectorAll(".ytd-subscribe-button-renderer").forEach((elem) => {
|
||||
elem.parentElement.appendChild(feedLink);
|
||||
|
||||
});
|
||||
}, 1500);
|
22
greasemonkey/Newegg Bullshit Reducer.js
Normal file
22
greasemonkey/Newegg Bullshit Reducer.js
Normal file
@ -0,0 +1,22 @@
|
||||
// ==UserScript==
|
||||
// @name Newegg Bullshit Reducer
|
||||
// @version 1
|
||||
// @grant none
|
||||
// @match *://*.newegg.com/*
|
||||
// @description you MOTHERFUCKER
|
||||
// @namespace adamrgrey.com
|
||||
// @license MIT
|
||||
// ==/UserScript==
|
||||
|
||||
function killit(){
|
||||
let target = document.querySelector(".newegg-notification");
|
||||
if(target !== null){
|
||||
console.log("found, removing");
|
||||
target.remove();
|
||||
clearInterval(checkInterval);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var checkInterval = setInterval(killit, 1000);
|
||||
killit();
|
19
greasemonkey/gmail please fuck off.js
Normal file
19
greasemonkey/gmail please fuck off.js
Normal file
@ -0,0 +1,19 @@
|
||||
// ==UserScript==
|
||||
// @name gmail please fuck off
|
||||
// @version 1
|
||||
// @grant none
|
||||
// @include /^https?://mail.google.com/
|
||||
// @require https://code.jquery.com/jquery-3.4.1.min.js
|
||||
// @require https://gist.githubusercontent.com/BrockA/2625891/raw/9c97aa67ff9c5d56be34a55ad6c18a314e5eb548/waitForKeyElements.js
|
||||
// ==/UserScript==
|
||||
|
||||
function onBannerFound(){
|
||||
console.log("found something");
|
||||
$("p:contains(This message was not sent to Spam because of a filter you created)").each(function(idx, elem){
|
||||
console.log("removing a parent of:");
|
||||
console.log(elem);
|
||||
$(elem).parent().parent().remove();
|
||||
});
|
||||
}
|
||||
|
||||
waitForKeyElements("p:contains(This message was not sent to Spam because of a filter you created)", onBannerFound);
|
31
greasemonkey/imdb poster grab.js
Normal file
31
greasemonkey/imdb poster grab.js
Normal file
@ -0,0 +1,31 @@
|
||||
// ==UserScript==
|
||||
// @name imdb poster grab
|
||||
// @version 1
|
||||
// @grant none
|
||||
// @namespace adamrgrey.com
|
||||
// @license MIT
|
||||
// @description don't know why imdb makes it so hard to grab the movie's own advertising. they want it to spread. it's advertising.
|
||||
// @include /^https?://(www\.)?imdb.com\/title\//
|
||||
// ==/UserScript==
|
||||
|
||||
|
||||
setTimeout(() => {
|
||||
//console.log("searching for imdb poster");
|
||||
let srcset = document.querySelector(".ipc-media--poster-l img").getAttribute("srcset").split(', ');
|
||||
//console.log("srcs: ", srcset.length);
|
||||
let biggestW = 0;
|
||||
let biggestUri = "";
|
||||
srcset.forEach((elem) => {
|
||||
let splitUp = elem.split(' ');
|
||||
let last = splitUp[splitUp.length - 1];
|
||||
let numVal = Number(last.match(/\d+/)[0]);
|
||||
if(numVal > biggestW){
|
||||
biggestUri = splitUp[0];
|
||||
}
|
||||
});
|
||||
//console.log("chose " + biggestUri + " because " + biggestW + " seems biggest");
|
||||
let feedLink = document.createElement("a");
|
||||
feedLink.setAttribute("href",biggestUri);
|
||||
feedLink.innerHTML = "poster plz";
|
||||
document.querySelector(".ipc-media--poster-l").parentElement.parentElement.parentElement.parentElement.appendChild(feedLink);
|
||||
}, 1500);
|
44
greasemonkey/mtg plot reader view.js
Normal file
44
greasemonkey/mtg plot reader view.js
Normal file
@ -0,0 +1,44 @@
|
||||
// ==UserScript==
|
||||
// @name mtg plot reader view
|
||||
// @version 1
|
||||
// @grant none
|
||||
// @namespace adamrgrey.com
|
||||
// @license MIT
|
||||
// @description prepare an mtg article for printing to pdf - like reader view, but save in one file, and keep images
|
||||
// @include /^https?://magic.wizards.com\/en\/news\/magic-story/
|
||||
|
||||
// ==/UserScript==
|
||||
|
||||
|
||||
|
||||
setTimeout(() => {
|
||||
purgeSiblingsUp(document.querySelector("article"));
|
||||
}, 2000);
|
||||
|
||||
function purgeSiblingsUp(targetElement){
|
||||
console.log("purging siblings of", targetElement);
|
||||
let parent = targetElement.parentElement;
|
||||
if(parent == null || parent === targetElement){
|
||||
console.log("lol j/k, at the top");
|
||||
return;
|
||||
}
|
||||
if(targetElement.nodeName == "BODY"){
|
||||
console.log("lol j/k, found the body");
|
||||
return;
|
||||
}
|
||||
console.log(parent);
|
||||
var children = targetElement.parentElement.children;
|
||||
if(children.length > 1){
|
||||
let del = [];
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if(children[i] !== targetElement){
|
||||
del.push(children[i]);
|
||||
}
|
||||
}
|
||||
console.log(del.length + " targets")
|
||||
for (let i = 0; i < del.length; i++) {
|
||||
del[i].remove();
|
||||
}
|
||||
}
|
||||
purgeSiblingsUp(parent);
|
||||
}
|
Loading…
Reference in New Issue
Block a user