The New And Improved List Of API and Third Party Apps

Nah, just let it be outdated.

I am thinking of writing a script / web app, for sorter; so that anyone can use.

Discourse (WaniKani Community) has an API to output JSON - https://docs.discourse.org No webscraping - The New And Improved List Of API and Third Party Apps I am not sure about authorization part, though.

Thanks for helping maintain the list!

I already did this for most scripts when I cleaned up the list a couple of months ago :eyes: Though I kept WKOF as Wanikani Open Framework because I felt like ā€œWanikaniā€ was very much part of its identity

sweat_smile

I agree. Alphabetic at least makes it easier to find, and in my opinion easier to peruse as well

2 Likes

If so, WaniKani/WK should be removed, in order to easily sort alphabetically.

If something is not sorted, like WKOF, why bother removing WaniKani/WK?

Broken scripts should be replaced, or removed if no actual script can be found. If buggy scripts (have unfixed bug reports) are somehow kept, there should be some notice.

Found it. It exists after all and my memories did not betray me. Itā€™s KunOn+ and is in the ā€œoutdated Scriptsā€ section, which is why it didnā€™t catch my eye initially.

2 Likes

Curious on whether youā€™ve got it to work or any bug reports?

Anyway, Iā€™ve come to agree that scripts should be sorted alphabetically, and WK/WaniKani removed, unless WK/WaniKani is a part of its identity (and WKOF isnā€™t not the only such name).

Nonetheless, for Outdated sections, anything with unfixed bug reports should be moved down; and having users, despite some tolerable bugs, should be moved up.

1 Like

Yep, it works. I was not happy with how the script forgot to concatinate the strings to say éƒØé¦–ć®åå‰ and just says 名前. I edited the script to add the 恮 and to concatinate the string so it says the full thing:

Script editied to say the whole thing
// ==UserScript==
// @name        WK Custom Review Question (KunOn+)
// @namespace   WK_CustomQuestion
// @description Changes the text of the Review or Lesson Quiz question. Specifies ON or KUN reading for Kanji. Options to have the text in English or Japanese.
// @author      hoovard
// @include     https://www.wanikani.com/review/session*
// @include     http://www.wanikani.com/review/session*
// @include     https://www.wanikani.com/lesson/session*
// @include     http://www.wanikani.com/lesson/session*
// @version     0.4.3
// @license     Do what you want with it (Preferably improve it).
// @grant       none
// ==/UserScript==
// Version 0.4.3 applies to Reviews and Lesson Quizzes.

// Language options
// English "en", Japanese "ja"
var strLang = "ja";


// Tested on the following:
// Firefox 35.0.1 and Chrome 39.0.2171.95 (64-bit), Linux Mint 17.1 Cinnamon 64-bit
// Firefox 35.0.1 and Chrome 40.0.2214.115 m, Windows 8.1 64-bit

// Thanks to Rui Pinheiro (LordGravewish) for the original script 
// and to Ethan for the idea to use MutationObserver to detect changes in the DOM.

// Vars to compose the replacement question string
var strKanji;
var strRadical;
var strVocab;
var strMeaning;
var strReading;
var strVocabReading;
var strOn;
var strKun;
var strName;

// Translations
switch (strLang)
{
	case "en":
		strKanji = "Kanji";
		strRadical = "Radical";
		strVocab = "Vocabulary";
		strMeaning = "Meaning";
		strReading = "yomi";
		strVocabReading = "Reading";
		strOn = "on'";
		strKun = "kun'";
		strName = "Name";
		break;
	case "ja":
		strKanji = "ę¼¢å­—ć®";
		strRadical = "éƒØ首恮";
		strVocab = "単čŖžć®";
		strMeaning = "ę„å‘³";
		strReading = "čŖ­ćæ";
		strVocabReading = "čŖ­ćæ";
		strOn = "音";
		strKun = "čؓ";
		strName = "名前";
		break;
}

// Variable to save and check against the previous contents of the jStorage item
var objSavedCurrentItem;

// Review or Lesson Quiz. jStorage objects are different.
bIsReview = ($(location).attr('href').indexOf("review") != -1);

// Code from Stack Overflow to detect changes in the DOM. 
// (http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom/14570614#14570614)
var observeDOM = (function(){
    var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
        eventListenerSupported = window.addEventListener;

    return function(obj, callback){
        if( MutationObserver ){
            // define a new observer
            var obs = new MutationObserver(function(mutations, observer){
                if( mutations[0].addedNodes.length || mutations[0].removedNodes.length )
                    callback();
            });
            // have the observer observe for changes in children
            obs.observe( obj, { childList:true, subtree:true });
        }
        else if( eventListenerSupported ){
            obj.addEventListener('DOMNodeInserted', callback, false);
            obj.addEventListener('DOMNodeRemoved', callback, false);
        }
    }
})();

// Callback function observing the 'question-type' div 'h1' element
var observeMe = $('#question-type h1')[0];
observeDOM( observeMe ,function(){ 
    var objCurItem;
    if (bIsReview) {
		objCurItem = $.jStorage.get("currentItem");
	} else {
		objCurItem = $.jStorage.get("l/currentQuizItem");
	}
	
    
    // Make sure that the currentItem has changed before updating. 
    // Otherwise you will respond to your own DOM changes.
    if (objCurItem != objSavedCurrentItem) {
		objSavedCurrentItem = objCurItem;
		
		var strQuestionType;
		if (bIsReview) {
			strQuestionType = $.jStorage.get("questionType");
		} else {
			strQuestionType = $.jStorage.get("l/questionType");
		}
		
		var strItemType = "";
		var strReadingType = "Reading";
		
		// Compose the string elements to be sent into the h1 element
		if ("kan" in objCurItem)
		{
			// Kanji
			strItemType = strKanji;
			if (strQuestionType == "reading") {
				if(objCurItem.emph == "onyomi")
					strReadingType = strKanji + strOn + strReading;
				else
					strReadingType = strKanji + strKun + strReading;
			} else {
				strReadingType = strKanji + strMeaning;
			}
		}
		else if ("voc" in objCurItem)
		{
			// Vocabulary
			strItemType = strVocab;
			if (strQuestionType == "reading") {			
					strReadingType = strVocab + strVocabReading;
			} else {
				strReadingType = strVocab + strMeaning;
			}
		}
		else if ("rad" in objCurItem)
		{
			// Radical
			strItemType = strRadical;
			strReadingType = strRadical + strName;
		}
		
		// replace the contents of #question-type h1
		switch (strLang)
		{
			case "en":
				$('#question-type h1').html(strItemType + ' <strong>' + strReadingType + '</strong>');
				break;
			case "ja":
				$('#question-type h1').html(strReadingType);
				break;					
		}
	}
	
});

So in itself, the script always ran perfectly fine, it just wasnā€™t fully finished I think. This script version as posted by a commenter however doesnā€™t work at all. The script as provided on https://greasyfork.org , perfectly fine.

1 Like

Created a GitHub write-up for the fixed script and released it on Greasyfork for convenience.

1 Like

Hi guys! I havenā€™t used Wanikani in a reeeeaally long time, and Iā€™m picking it up again. Iā€™ve noticed that some scripts that I used to have are now outdated.

Iā€™m specifically looking for the one where youā€™re allowed to make mistakes/typos and still get through. Is there a similar script? I tried looking through the list, but I didnā€™t see one. Maybe I missed itā€¦

HELP PLEASE!

1 Like

You want Double Check

2 Likes

Thank you Kumi! Reliable as always~

1 Like

Hi,

I think you can add the Python CLI client I made.

It works for both reviews and lessons. I have been using it a lot.

I use it mostly that way.

wanikani-cli reviews --hard --mnemonics --autoplay
1 Like

You can add it yourself where you see fit, anyone can edit the first post

1 Like

Thanks. I added a CLI section under computer apps. Since technically it should run with any computers that can run python 3.9.

2 Likes

Is there a script that lets me see item information on the dashboard just by hovering over it? Itā€™s a feature in the custom immersion script, but I canā€™t use that one since itā€™s not compatible with all the other dashboard scripts Iā€™m using.

Thanks!

1 Like

have you tried

1 Like

Oh snap! Didnā€™t know that was a feature when I was reading itā€™s description! Thanks so much ! This is why youā€™re the GOAT here.
Last question: Do you know if thereā€™s a review re-order script that lets me review all radical/kanji first across all levels and then Vocab?

I explained the issue I was having here if you cared to see why (because maybe thereā€™s another solution):

This script allows you to create highly customizable reordering presets. For your requirement, the following preset should do what you asked for:

{"preset":{"name":"Radicals+Kanji before Vocab","selected_action":"0","available_on":{"reviews":true,"lessons":false,"extra_study":true,"self_study":false},"actions":[{"name":"First all radicals and kanji","type":"filter","filter":{"filter":"item_type","item_type":{"radical":true,"kanji":true,"vocabulary":false}}},{"name":"Then all vocab","type":"freeze & restore"}]}}

You can copy and paste this preset into the Reorder Omega settings dialog (in the tab ā€œPresetsā€, click on an entry in the ā€œPresets Listā€ and then hit CTRL+V). During reviews, you can then select the ā€œRadicals+Kanji before Vocabā€ preset in the bottom left.

Caveat

Iā€™m not sure how Reorder Omega handles the active queue. Since WaniKani randomizes which of the ten reviews in the active queue it shows, I expect that in the worst case you might still get asked 9 kanji/radical reviews after the first vocab review comes up (but maybe Reorder Omega already prevents this ā€“ I donā€™t know). If you want to avoid this, you could instead use the following preset to just get the radicals and kanji:

{"preset":{"name":"Radicals+Kanji","selected_action":0,"available_on":{"reviews":true,"lessons":false,"extra_study":true,"self_study":false},"actions":[{"name":"Only radicals and kanji","type":"filter","filter":{"filter":"item_type","item_type":{"radical":true,"kanji":true,"vocabulary":false}}}]}}

After finishing this review session, you should be left with a queue full of vocabulary items (unless you got new kanji/radical reviews in the meantime). Just start a new review session and select ā€œNoneā€ as preset to go through all vocabulary reviews.

1 Like

Try Item Inspector Not only it displays information by hovering over items but you can customize both the information displayed and the item list.

Wait a second, this script is GODLY, omg.

Of course @Kumirei made it xD

Unfortunately I only have 0 Rad 5 Kanji 40 Vocab in queue now but later tonight Iā€™ll have a lot more, to be able to test how it works with the active queue! I can update you when I find out in case youā€™re curious (Which Iā€™m assuming probably not since Kumirei made it and didnā€™t discuss that conflict anywhere from the little Iā€™ve seen so far). 1 last questionā€¦ since I now know that this godly script existsā€¦

Is there a way to add an ADDITIONAL filter so that it prioritizes Kanji/Radicals of the current level first (and then the rest in descending order)? And then restoring the rest of the vocab?
Or it could be a modification to the second one you created in case there is an issue interacting with the active queue
Just so I can always prioritize reviews thatā€™ll help me level up first in case Iā€™m short of time: I am trying to get to 60 ASAP (or at least 30-40 so reading can be a lot easier). Since I have a long way to go, something like that would help a LOT over the next few months- only reason Iā€™m asking for help since Iā€™d hate to ask someone to do more work than needed for me :sob: Much appreciation though!

Maybe other people who are also trying to prioritize leveling up as fast as possible could also use that preset !

I am aware that this could also lead to a backlog of overdue reviews, but I donā€™t mind spending pockets of hours throughout the week when I do have time to knock it out. I just work a lot on random days >.<

Sorry Iā€™m still newish with scripts here and canā€™t contribute myself yet. The community here is definitely great though!

1 Like

Oh wow, this script is a lot more involved and has more features than the dashboard plus!
I have a question (since Iā€™m a math geek and looked at the leach value formula)

If hypothetically, I got an item wrong 15 times in a row at App. 1, will it continue to be a leach until itā€™s burned? Iā€™m still learning terminologies here. But definitely think Iā€™ll consider using yours in conjunction with leach trainer eventually.

Thanks!

Edit: As long as it doesnā€™t interfere with any of the other dashboard scripts Iā€™m using. Unfortunately had to stop using the immersion one for that reason >.<


Iā€™m assuming this will replace my dashboard plus