// ==UserScript== // @name 4chan GETter // @description Script to help you get repeating digits. Loosely based on mGET. Requires 4chan X. // @author Xyl // @match *://*.4chan.org/* // @match *://*.4channel.org/* // @grant GM_xmlhttpRequest // @connect sys.4chan.org // @version 1.2.1 // @namespace https://xyllon.com // ==/UserScript== let latestPostNumber = -1; const board = location.pathname.match(/\/[^\/]+\//)[0]; let games = (board == "/v/" || board == "/vg/" || board == "/vr/"); if (document.getElementById("qr")) inject(); document.addEventListener('QRDialogCreation', (e) => inject()); function inject() { let dubs = (games) ? "" : ""; document.querySelector('#qr .move').insertAdjacentHTML("afterend", `
Last Post #
<input type="number" name="offset" value="1" -3px; width: 5ch; height: 16px; padding: 0px !important; -moz-appearance:textfield;" id="offset" title="When to post (a value of 1 with a target post of 99 will post at 98, a value of 2 will post at 97, etc.)">
`); approxLatestPostNumber(); } function checkForGET () { window.target = latestPostNumber + parseInt(document.getElementById('offset').value); switch(document.getElementById("digits").value) { case "": break; case "dubs": return /(\d)\1{1,}$/.test(target); break; case "trips": return /(\d)\1{2,}$/.test(target); break; case "quads": return /(\d)\1{3,}$/.test(target); break; case "quints": return /(\d)\1{4,}$/.test(target); break; case "sexts": return /(\d)\1{5,}$/.test(target); break; case "septs": return /(\d)\1{6,}$/.test(target); break; case "octs": return /(\d)\1{7,}$/.test(target); break; case "nons": return /(\d)\1{8,}$/.test(target); break; case "decs": return /(\d)\1{9,}$/.test(target); break; } } function approxLatestPostNumber() { fetch("https://a.4cdn.org" + board + "1.json").then(response => response.json()).then(json => { let threadFound = false; let thread = 0; while (!threadFound) { if (json.threads[thread].posts[0].closed == 1 || json.threads[thread].posts[0].sticky == 1) thread++; else threadFound = true; } latestPostNumber = json.threads[thread].posts.slice(-1)[0].no; document.getElementById("postnumber").textContent = latestPostNumber; updatePostNumber(); }); } function updatePostNumber() { GM_xmlhttpRequest({ url: ("https://sys.4chan.org" + board + "imgboard.php?res=" + (latestPostNumber + 1)), method: "HEAD", onload: response => { if (response.status == 200) { latestPostNumber++; } else if (games && /(([1-9])\2|[^0]0{2,2})$/.test(latestPostNumber + 1)) { if (/[^9]99$/.test(latestPostNumber + 1)) latestPostNumber += 2; else latestPostNumber++; } if (checkForGET()) { document.querySelector("#file-n-submit input:last-child").click(); document.getElementById("digits").value = "none"; } document.getElementById("postnumber").style.visibility = "visible"; document.getElementById("postnumber").textContent = latestPostNumber; updatePostNumber(); } }); }