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