Advertisement
ROMaster2

Speedrun.com Games API parser

Apr 9th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name        Games API Parser
  3. // @namespace   dsrhswb
  4. // @run-at      document-end
  5. // @include     https://www.speedrun.com/api/v1/games*
  6. // @grant       none
  7. // ==/UserScript==
  8.  
  9. var charset = document.createElement("meta"); //Add character encoding?
  10. charset.setAttribute("charset", "utf-8");
  11. document.getElementsByTagName("head")[0].appendChild(charset);
  12.  
  13. var stylesheet1 = document.createElement("link"); //Add themes
  14. stylesheet1.setAttribute("rel", "stylesheet");
  15. stylesheet1.setAttribute("type", "text/css");
  16. stylesheet1.setAttribute("href", "/assets/css/vendor-speedruncom.min.css");
  17. document.getElementsByTagName("head")[0].appendChild(stylesheet1);
  18. var stylesheet2 = document.createElement("link");
  19. stylesheet2.setAttribute("rel", "stylesheet");
  20. stylesheet2.setAttribute("type", "text/css");
  21. stylesheet2.setAttribute("href", "/assets/theme.php?theme=default");
  22. document.getElementsByTagName("head")[0].appendChild(stylesheet2);
  23.  
  24. var elem = document.getElementsByTagName("BODY")[0].firstChild;
  25. elem.style.visibility = "hidden";
  26. elem.style.position = "absolute"; //Hiding the raw data without destroying it
  27. var raw = JSON.parse(elem.innerHTML);
  28. var data = raw.data;
  29. var mainDiv = document.createElement("div");
  30. mainDiv.className = "resultListing";
  31.  
  32. data.forEach(function(game) {
  33.     var gameDiv = document.createElement("div");
  34.     gameDiv.className = "listcell";
  35.     mainDiv.appendChild(gameDiv);
  36.    
  37.     var a = document.createElement("a");
  38.     a.href = "/" + game.weblink.split("/")[3];
  39.     gameDiv.appendChild(a);
  40.    
  41.     var img = document.createElement("img");
  42.     img.className = "cover-128 border";
  43.     img.src = "/themes/" + game.weblink.split("/")[3] + "/cover-128.png";
  44.     img.onerror = function(){img.src = "/themes/404/cover-128.png"};
  45.     img.alt = "";
  46.     a.appendChild(img);
  47.    
  48.     var name = document.createElement("div");
  49.     name.innerHTML = game.names.international;
  50.     a.appendChild(name);
  51. });
  52. document.getElementsByTagName("BODY")[0].appendChild(mainDiv);
  53.  
  54. var pager = document.createElement("div");
  55. pager.className = "pager";
  56.  
  57. var page0 = document.createElement("a");
  58. if (raw.pagination.links[0].rel == "next") {
  59.     page0.className = "next";
  60.     page0.innerHTML = "Next";
  61. } else {
  62.     page0.className = "prev";
  63.     page0.innerHTML = "Previous";
  64. }
  65. page0.href = raw.pagination.links[0].uri;
  66. pager.appendChild(page0);
  67.  
  68. if (raw.pagination.links[1] != undefined && raw.pagination.links[1].rel == "next") {
  69.     var page1 = document.createElement("a");
  70.     page1.className = "next";
  71.     page1.innerHTML = "Next";
  72.     page1.href = raw.pagination.links[1].uri;
  73.     pager.appendChild(page1);
  74. }
  75.  
  76. document.getElementsByTagName("BODY")[0].appendChild(pager);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement