Initial commit
This commit is contained in:
commit
bf05fbc514
|
@ -0,0 +1,19 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name Anti-Thot
|
||||||
|
// @namespace blankie-scripts
|
||||||
|
// @match *://*/*
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @author blankie
|
||||||
|
// @description fuck thots
|
||||||
|
// @inject-into page
|
||||||
|
// @run-at document-start
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
var real_atob = window.atob;
|
||||||
|
unsafeWindow.atob = function(a) {
|
||||||
|
if (a === "eyJhZGJsb2NrIjp7fSwiZXhjbHVkZXMiOiIifQ==") {
|
||||||
|
throw new Error("fuck thots");
|
||||||
|
}
|
||||||
|
return real_atob(a);
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name Auto Cloudflare Email Protection Decoder
|
||||||
|
// @namespace blankie-scripts
|
||||||
|
// @match *://*/*
|
||||||
|
// @grant none
|
||||||
|
// @version 1.2.1
|
||||||
|
// @author blankie
|
||||||
|
// @description Automatically decodes Cloudflare Email Protected URLs
|
||||||
|
// @inject-into content
|
||||||
|
// @run-at document-end
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
function decode_cf_email(cf_email) {
|
||||||
|
var decoded = '', right_xor_arg = parseInt(cf_email.substring(0, 2), 16);
|
||||||
|
for (var i = 2; i < cf_email.length; i += 2) {
|
||||||
|
decoded += String.fromCharCode(parseInt(cf_email.substring(i, i + 2), 16) ^ right_xor_arg);
|
||||||
|
}
|
||||||
|
return decodeURIComponent(escape(decoded));
|
||||||
|
}
|
||||||
|
|
||||||
|
function parse_document(document) {
|
||||||
|
var tags = document.querySelectorAll('a');
|
||||||
|
for (var i = 0; i < tags.length; i++) {
|
||||||
|
var tag = tags[i], index_of = tag.href.indexOf('/cdn-cgi/l/email-protection#');
|
||||||
|
if (index_of > -1) {
|
||||||
|
tag.href = 'mailto:' + decode_cf_email(tag.href.substring(index_of + 28))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var tags = document.querySelectorAll('.__cf_email__');
|
||||||
|
for (var i = 0; i < tags.length; i++) {
|
||||||
|
var tag = tags[i], text_node = document.createTextNode(decode_cf_email(tag.getAttribute('data-cfemail')));
|
||||||
|
tag.parentNode.replaceChild(text_node, tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
var tags = document.querySelectorAll('template');
|
||||||
|
for (var i = 0; i < tags.length; i++) {
|
||||||
|
parse_document(tags[i].content);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
parse_document(unsafeWindow.document);
|
||||||
|
} catch (e) {
|
||||||
|
unsafeWindow.console.error(e);
|
||||||
|
throw e;
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name Catbox Max Files Disabler
|
||||||
|
// @namespace blankie-scripts
|
||||||
|
// @match https://catbox.moe/
|
||||||
|
// @match https://litterbox.catbox.moe/
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @author blankie
|
||||||
|
// @description Disables Catbox's max files limit
|
||||||
|
// @inject-into document-end
|
||||||
|
// @run-as page
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
for (var i=0; i < unsafeWindow.Dropzone.instances.length; i++ ) {
|
||||||
|
unsafeWindow.Dropzone.instances[i].options.maxFiles = null;
|
||||||
|
}
|
||||||
|
}, 5000);
|
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright (c) 2022 blankie
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
|
@ -0,0 +1,26 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name Quizizz Force Show Answer
|
||||||
|
// @namespace blankie-scripts
|
||||||
|
// @match https://quizizz.com/*
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @author blankie
|
||||||
|
// @description Allow you to show answers on Quizizz even if you're not logged in
|
||||||
|
// @inject-into page
|
||||||
|
// @run-at document-end
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
unsafeWindow.user = new Proxy(unsafeWindow.user, {
|
||||||
|
get: function(target, prop, receiver) {
|
||||||
|
if (prop === 'id') {
|
||||||
|
var e = new Error();
|
||||||
|
var stack_items = e.stack.split('\n');
|
||||||
|
for (var i = 0; i < stack_items.length; i++) {
|
||||||
|
if (stack_items[i].startsWith('click -> .show-answers-btn@')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Reflect.get(...arguments);
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1,31 @@
|
||||||
|
# User Scripts
|
||||||
|
|
||||||
|
User scripts that I made to deal with some itches
|
||||||
|
|
||||||
|
## Anti-Thot
|
||||||
|
|
||||||
|
Hacky script to get rid of thot notifications
|
||||||
|
|
||||||
|
## Auto Cloudflare Email Protection Decoder
|
||||||
|
|
||||||
|
A reimplementation of Cloudflare's email protection code so that I don't have
|
||||||
|
to enable scripts to see emails again. Inspired by
|
||||||
|
[this article](https://web.archive.org/web/20210120041753/https://resynth1943.net/articles/cloudflares-email-protection-does-not-work/).
|
||||||
|
|
||||||
|
## Catbox Max Files Disabler
|
||||||
|
|
||||||
|
Hacky script to disable the client-side file limit per tab
|
||||||
|
|
||||||
|
## Quizizz Force Show Answer
|
||||||
|
|
||||||
|
![A man yelling "I DON'T WANNA", followed by sign up/login boxes](https://gitlab.com/blankX/userscripts/-/raw/master/accounts.jpg)
|
||||||
|
|
||||||
|
## RESser
|
||||||
|
|
||||||
|
A script to add more keyboard shortcuts to old reddit that I feel too hacky to
|
||||||
|
add into RES (requires RES).
|
||||||
|
Keyboard shortcuts:
|
||||||
|
- `v`/`n`: Reveal all text spoilers
|
||||||
|
- `Enter`/`Shift+Enter` on a crosspoted item: Open a crossposted item instead
|
||||||
|
of its link (sometimes also opens its link, no idea how to fix)
|
||||||
|
- `Shift+Enter` on Continue this thread: Opens a thread in a new tab
|
|
@ -0,0 +1,43 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name RESser
|
||||||
|
// @namespace blankie-scripts
|
||||||
|
// @match https://old.reddit.com/*
|
||||||
|
// @grant GM_openInTab
|
||||||
|
// @version 1.4
|
||||||
|
// @author blankie
|
||||||
|
// @inject-into page
|
||||||
|
// @run-at document-start
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
document.addEventListener('keydown', function(e) {
|
||||||
|
switch (e.keyCode) {
|
||||||
|
case 86: // v
|
||||||
|
case 78: // n
|
||||||
|
// v/n to expose text spoilers
|
||||||
|
document.querySelectorAll('.RES-keyNav-activeElement .md-spoiler-text:not(.revealed)').forEach((e) => {
|
||||||
|
e.classList.add('revealed');
|
||||||
|
e.click();
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 13: // return/enter
|
||||||
|
// [shift-]enter on crossposted item to go to crossposted item instead of link
|
||||||
|
const crosspostA = document.querySelector('.RES-keyNav-activeElement .crosspost-preview a');
|
||||||
|
if (crosspostA !== null) {
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
if (e.shiftKey) {
|
||||||
|
// TODO fix duplicate link from res lmao
|
||||||
|
GM_openInTab(crosspostA.href, {active: true});
|
||||||
|
} else {
|
||||||
|
location.href = crosspostA.href;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// shift-enter on 'Continue this thread'
|
||||||
|
if (e.shiftKey) {
|
||||||
|
const continueThing = document.querySelector('.RES-keyNav-activeElement > span.deepthread > a');
|
||||||
|
if (continueThing !== null) {
|
||||||
|
GM_openInTab(continueThing.href, {active: true});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}, {capture: true, useCapture: true})
|
Binary file not shown.
After Width: | Height: | Size: 137 KiB |
Loading…
Reference in New Issue