Advertisement
Guest User

WaniKani Real Numbers by Penx

a guest
Jul 13th, 2014
786
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. // ==UserScript==
  2. // @name WaniKani Real Numbers
  3. // @namespace penx.scripts
  4. // @description Replaces 42+ with the real number using WaniKani API v1.0
  5. // @include http*://www.wanikani.com/*
  6. // @grant GM_deleteValue
  7. // @grant GM_getValue
  8. // @grant GM_setValue
  9. // @grant GM_registerMenuCommand
  10. // @version 2.8
  11. // @run-at document-end
  12. // @require http://code.jquery.com/jquery-1.8.3.min.js
  13. // ==/UserScript==
  14.  
  15. function main(){
  16.  
  17. var apikey = GM_getValue("apikey");
  18. if(!apikey){
  19.  
  20. if(window.location.href.indexOf("account") != -1){
  21.  
  22. retrieveAPIkey();
  23. apikey = GM_getValue("apikey");
  24.  
  25. }else{
  26.  
  27. var okcancel = confirm("WaniKani Real Numbers has no API key entered!\nPress OK to go to your settings page and retrieve your API key!");
  28.  
  29. if(okcancel == true){
  30.  
  31. window.location = "https://www.wanikani.com/account";
  32.  
  33. }
  34. }
  35.  
  36. }
  37.  
  38. var doneReviews = GM_getValue("doneReviews", true);
  39. var lastUpdate = GM_getValue("lastUpdate", "0");
  40. var currentTime = new Date().getTime();
  41.  
  42. if((currentTime-lastUpdate) > 120000){
  43.  
  44. GM_setValue("lastUpdate", currentTime.toString());
  45. doneReviews = true;
  46.  
  47. }
  48.  
  49.  
  50. if(window.location.href.indexOf("review") != -1 || window.location.href.indexOf("lesson") != -1){
  51.  
  52. GM_setValue("doneReviews", true);
  53.  
  54. }else{
  55.  
  56. var numberReviews = document.getElementsByClassName("reviews")[0].getElementsByTagName("span")[0];
  57. var numberLessons = document.getElementsByClassName("lessons")[0].getElementsByTagName("span")[0];
  58.  
  59. if(numberReviews.innerHTML == "42+" || numberLessons.innerHTML == "42+"){
  60.  
  61. if(apikey){
  62.  
  63. if(doneReviews){
  64.  
  65. $.getJSON('https://www.wanikani.com/api/v1/user/'+ apikey +'/study-queue', function(data){
  66. setTimeout(function() {
  67. if(data.error){
  68. alert("API Error: "+data.error.message);
  69. }else{
  70. GM_setValue("numberReviews", data.requested_information.reviews_available);
  71. GM_setValue("numberLessons", data.requested_information.lessons_available);
  72. GM_setValue("doneReviews", false);
  73. displayReal(numberReviews, numberLessons);
  74. }
  75. }, 0);
  76. });
  77.  
  78. }else{
  79.  
  80. displayReal(numberReviews, numberLessons);
  81.  
  82. }
  83.  
  84. }
  85. }
  86. }
  87. }
  88.  
  89. window.addEventListener("load", main, false);
  90.  
  91. GM_registerMenuCommand("WaniKani Real Numbers: Manually enter API key", setAPIkey, "R");
  92. GM_registerMenuCommand("WaniKani Real Numbers: Reset API key", resetAPIkey, "e");
  93.  
  94. function resetAPIkey(){
  95.  
  96. GM_deleteValue("apikey");
  97. alert("WaniKani Real Numbers API key reset!");
  98.  
  99. }
  100.  
  101. function retrieveAPIkey(){
  102.  
  103. var apikey = document.getElementsByClassName("span6")[7].getAttribute("value");
  104. alert("WaniKani Real Numbers API key set to: "+apikey);
  105.  
  106. if(apikey){
  107.  
  108. GM_setValue("apikey", apikey);
  109. GM_setValue("doneReviews", true);
  110.  
  111. }
  112.  
  113. }
  114.  
  115. function setAPIkey(){
  116.  
  117. var apikey = prompt("Enter API key for WaniKani Real Numbers:");
  118.  
  119. if(apikey){
  120.  
  121. GM_setValue("apikey", apikey);
  122. GM_setValue("doneReviews", true);
  123. }
  124.  
  125. }
  126.  
  127. function displayReal(numberReviews, numberLessons){
  128.  
  129. numberReviews.innerHTML = GM_getValue("numberReviews");
  130. numberLessons.innerHTML = GM_getValue("numberLessons");
  131.  
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement