"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(/ { 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); } } } }); });