Initial commit

This commit is contained in:
blank X 2022-07-01 21:43:46 +07:00
commit bf05fbc514
Signed by: blankie
GPG Key ID: CC15FC822C7F61F5
8 changed files with 203 additions and 0 deletions

19
Anti-Thot.user.js Normal file
View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);

19
LICENSE Normal file
View File

@ -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.

View File

@ -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);
}
});

31
README.md Normal file
View File

@ -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

43
RESser.user.js Normal file
View File

@ -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})

BIN
accounts.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB