Speedrun.com Games Parser

Makes games in the API readable

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name          Speedrun.com Games Parser
// @namespace     dsrhswb
// @version       1.00
// @description   Makes games in the API readable
// @run-at        document-end
// @include       https://www.speedrun.com/api/v1/games*
// @grant         none
// ==/UserScript==

var charset = document.createElement("meta"); //Add character encoding?
charset.setAttribute("charset", "utf-8");
document.getElementsByTagName("head")[0].appendChild(charset);

var stylesheet1 = document.createElement("link"); //Add themes
stylesheet1.setAttribute("rel", "stylesheet");
stylesheet1.setAttribute("type", "text/css");
stylesheet1.setAttribute("href", "/assets/css/vendor-speedruncom.min.css");
document.getElementsByTagName("head")[0].appendChild(stylesheet1);
var stylesheet2 = document.createElement("link");
stylesheet2.setAttribute("rel", "stylesheet");
stylesheet2.setAttribute("type", "text/css");
stylesheet2.setAttribute("href", "/assets/theme.php?theme=default");
document.getElementsByTagName("head")[0].appendChild(stylesheet2);

var elem = document.getElementsByTagName("BODY")[0].firstChild;
elem.style.visibility = "hidden";
elem.style.position = "absolute"; //Hiding the raw data without destroying it
var raw = JSON.parse(elem.innerHTML);
var data = raw.data;
var mainDiv = document.createElement("div");
mainDiv.className = "resultListing";

data.forEach(function(game) {
    var gameDiv = document.createElement("div");
    gameDiv.className = "listcell";
//  gameDiv.style = "min-height: 230px";
    mainDiv.appendChild(gameDiv);
    
    var a = document.createElement("a");
    a.href = "/" + game.weblink.split("/")[3];
    gameDiv.appendChild(a);
    
    var img = document.createElement("img");
    img.className = "cover-128 border";
    img.src = "/themes/" + game.weblink.split("/")[3] + "/cover-128.png";
    img.onerror = function(){img.src = "/themes/404/cover-128.png"};
    img.alt = "";
    a.appendChild(img);
    
    var name = document.createElement("div");
    name.innerHTML = game.names.international;
    a.appendChild(name);
});
document.getElementsByTagName("BODY")[0].appendChild(mainDiv);

var pager = document.createElement("div");
pager.className = "pager";

var page0 = document.createElement("a");
if (raw.pagination.links[0].rel == "next") {
    page0.className = "next";
    page0.innerHTML = "Next";
} else {
    page0.className = "prev";
    page0.innerHTML = "Previous";
}
page0.href = raw.pagination.links[0].uri;
pager.appendChild(page0);

if (raw.pagination.links[1] != undefined && raw.pagination.links[1].rel == "next") {
    var page1 = document.createElement("a");
    page1.className = "next";
    page1.innerHTML = "Next";
    page1.href = raw.pagination.links[1].uri;
    pager.appendChild(page1);
}

document.getElementsByTagName("BODY")[0].appendChild(pager);