// ==UserScript== // @name FitGirl Repacks - all games in a single page. // @description All games will be shown in a single page instead of multiple pages. Use CTRL+F! // @namespace erkexzcx // @version 0.2 // @author You // @match http://fitgirl-repacks.site/all-my-repacks-a-z/* // @grant none // @downloadURL none // ==/UserScript== // Make sure we are on the first page: if(window.location.href !== "http://fitgirl-repacks.site/all-my-repacks-a-z/?lcp_page0=1#lcp_instance_0"){ window.location.replace("http://fitgirl-repacks.site/all-my-repacks-a-z/?lcp_page0=1#lcp_instance_0"); return; } // Some reusable vars: var gamesContainer = document.getElementById("lcp_instance_0"); var pagesContainer = document.getElementsByClassName("lcp_paginator")[0]; var dummyDocument = document.implementation.createHTMLDocument(); // Hide pages: pagesContainer.style.display = 'none'; // Open links in new tab: makeLinksOpenInNewTab(document); var pages = pagesContainer.querySelectorAll('li > a[href^="http://fitgirl-repacks.site/all-my-repacks-a-z/?lcp_page0="][title]'); Array.prototype.forEach.call(pages, function(el, i){ if(el.innerHTML === "Next Page"){ return; } var request = new XMLHttpRequest(); request.open('GET', el.getAttribute('href'), true); request.onload = function() { if (this.status >= 200 && this.status < 400) { parseAndAppend(this.response); } else { alert("Error occured while parsing games! Userscript now stops, please refresh the page."); return; } }; request.onerror = function() { alert("Error occured while parsing games! Userscript now stops, please refresh the page."); return; }; request.send(); }); function parseAndAppend(html){ dummyDocument.body.innerHTML = html; // Open links in new tab: dummyDocument = makeLinksOpenInNewTab(dummyDocument); // Append parsed new links to existing page: var elements = dummyDocument.querySelectorAll('#lcp_instance_0 > li'); Array.prototype.forEach.call(elements, function(el, i){ gamesContainer.appendChild(el); }); } // Make all links to open in a new tab: function makeLinksOpenInNewTab(doc){ var links = doc.querySelectorAll('#lcp_instance_0 > li > a[href][title]'); for(var i=0; i < links.length; i++) { links[i].setAttribute('target', '_blank'); } return doc; }