Last active
August 29, 2015 14:15
-
-
Save sheodox/beb5a570ded19a54c973 to your computer and use it in GitHub Desktop.
WK Real Numbers (Fixed for Greasemonkey)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name WaniKani Real Numbers | |
// @namespace penx.scripts | |
// @description Replaces 42+ with the real number using WaniKani API v1.0 | |
// @include https://www.wanikani.com/* | |
// @version 2.8 | |
// @run-at document-end | |
// @grant GM_registerMenuCommand | |
// @grant GM_setValue | |
// @grant GM_getValue | |
// @grant unsafeWindow | |
// @downloadURL https://gist.github.com/dbs727/beb5a570ded19a54c973/raw/524983375c3496a793880fe68b42126e4808fee2/wkrealnumbers.user.js | |
// @require http://code.jquery.com/jquery-1.8.3.min.js | |
// ==/UserScript== | |
function main(){ | |
var apikey = GM_getValue("apikey"); | |
if(!apikey){ | |
if(window.location.href.indexOf("account") != -1){ | |
retrieveAPIkey(); | |
apikey = GM_getValue("apikey"); | |
}else{ | |
var okcancel = confirm("WaniKani Real Numbers has no API key entered!\nPress OK to go to your settings page and retrieve your API key!"); | |
if(okcancel == true){ | |
window.location = "https://www.wanikani.com/account"; | |
} | |
} | |
} | |
var doneReviews = GM_getValue("doneReviews", true); | |
var lastUpdate = GM_getValue("lastUpdate", "0"); | |
var currentTime = new Date().getTime(); | |
if((currentTime-lastUpdate) > 120000){ | |
GM_setValue("lastUpdate", currentTime.toString()); | |
doneReviews = true; | |
} | |
if(window.location.href.indexOf("review") != -1 || window.location.href.indexOf("lesson") != -1){ | |
GM_setValue("doneReviews", true); | |
}else{ | |
var numberReviews = document.getElementsByClassName("reviews")[0].getElementsByTagName("span")[0]; | |
var numberLessons = document.getElementsByClassName("lessons")[0].getElementsByTagName("span")[0]; | |
if(numberReviews.innerHTML == "42+" || numberLessons.innerHTML == "42+"){ | |
if(apikey){ | |
if(doneReviews){ | |
$.getJSON('https://www.wanikani.com/api/v1/user/'+ apikey +'/study-queue', function(data){ | |
setTimeout(function() { | |
console.log(data); | |
if(data.error){ | |
alert("API Error: "+data.error.message); | |
}else{ | |
GM_setValue("numberReviews", data.requested_information.reviews_available); | |
GM_setValue("numberLessons", data.requested_information.lessons_available); | |
GM_setValue("doneReviews", false); | |
displayReal(numberReviews, numberLessons); | |
} | |
}, 0); | |
}); | |
}else{ | |
displayReal(numberReviews, numberLessons); | |
} | |
} | |
} | |
} | |
} | |
setTimeout(main, 3000); | |
GM_registerMenuCommand("WaniKani Real Numbers: Manually enter API key", setAPIkey, null, null, "R"); | |
GM_registerMenuCommand("WaniKani Real Numbers: Reset API key", resetAPIkey, null, null, "e"); | |
function resetAPIkey(){ | |
GM_deleteValue("apikey"); | |
alert("WaniKani Real Numbers API key reset!"); | |
} | |
function retrieveAPIkey(){ | |
var apikey = document.getElementsByClassName("span6")[7].getAttribute("value"); | |
alert("WaniKani Real Numbers API key set to: "+apikey); | |
if(apikey){ | |
GM_setValue("apikey", apikey); | |
GM_setValue("doneReviews", true); | |
} | |
} | |
function setAPIkey(){ | |
var apikey = prompt("Enter API key for WaniKani Real Numbers:"); | |
if(apikey){ | |
GM_setValue("apikey", apikey); | |
GM_setValue("doneReviews", true); | |
} | |
} | |
function displayReal(numberReviews, numberLessons){ | |
numberReviews.innerHTML = GM_getValue("numberReviews"); | |
numberLessons.innerHTML = GM_getValue("numberLessons"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment