im dumb
This commit is contained in:
66
dist/optifine-download-links.user.js
vendored
Normal file
66
dist/optifine-download-links.user.js
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
"use strict";
|
||||
// ==UserScript==
|
||||
// @name OptiFine Download Links
|
||||
// @namespace zomo.dev
|
||||
// @match https://optifine.net/*
|
||||
// @grant none
|
||||
// @version 1.0
|
||||
// @author zomo
|
||||
// @description automatically grab optifine links through the ads
|
||||
// @downloadURL https://git.zomo.dev/zomo/browser-scripts/raw/branch/main/dist/optifine-download-links.zomo.js
|
||||
// @updateURL https://git.zomo.dev/zomo/browser-scripts/raw/branch/main/dist/optifine-download-links.zomo.js
|
||||
// ==/UserScript==
|
||||
const onhover = false; // when to load link, false will load immediately
|
||||
async function getDownload(href) {
|
||||
let resp = await fetch(href);
|
||||
let text = await resp.text();
|
||||
let match = text.match(/<a href=['"](downloadx.*?)['"]/i);
|
||||
if (match) {
|
||||
return match[1];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
function attachFetchDownloadLink(a, depth = 0) {
|
||||
function run() {
|
||||
a.innerText = 'Loading';
|
||||
let url = new URL(a.href);
|
||||
if (url.pathname === '/adloadx') {
|
||||
getDownload(a.href).then(downloadUrl => {
|
||||
if (downloadUrl) {
|
||||
a.href = downloadUrl;
|
||||
a.innerText = 'Download';
|
||||
}
|
||||
else {
|
||||
a.innerText = 'Failed';
|
||||
if (onhover)
|
||||
attachFetchDownloadLink(a, ++depth);
|
||||
else
|
||||
setTimeout(() => attachFetchDownloadLink(a, ++depth), 1000);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
if (depth > 5)
|
||||
return;
|
||||
if (onhover) {
|
||||
a.addEventListener('mouseover', run, { once: true });
|
||||
}
|
||||
else {
|
||||
run();
|
||||
}
|
||||
}
|
||||
addEventListener('load', () => {
|
||||
document.querySelectorAll('a').forEach(a => {
|
||||
let href = new URL(a.href);
|
||||
if (href.hostname === 'adfoc.us') {
|
||||
let params = href.searchParams;
|
||||
if (params.has('url')) {
|
||||
let url = params.get('url')?.replace('http://', 'https://');
|
||||
if (url) {
|
||||
a.href = url;
|
||||
attachFetchDownloadLink(a);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user