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