Files
browser-scripts/dist/optifine-download-links.zomo.js
2022-06-05 20:45:08 -05:00

65 lines
1.9 KiB
JavaScript

"use strict";
// ==UserScript==
// @name OptiFine Download Links
// @namespace zomo
// @match https://optifine.net/*
// @grant none
// @version 1.0
// @author zomo
// @description automatically grab optifine links through the ads
// ==/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);
}
}
}
});
});