[Extension] WICS - WaniKani Integrated Custom SRS - Now with deck exports!

It works and new items appear in lessons. Now waiting for Jotoba API integration, perhaps. My Anki import, originally from Yomichan, isn’t cleaned.

As in that doesn’t work? If yes, what errors do you get or what doesn’t work with them?

It works, but I need to delete Kanji field one-by-one. Perhaps re-importing also works.

There is another problem of Meaning field can’t be edited. Only add or delete. Probably a general problem with string array fields.

Importing from Anki is even more complex if the field is not a string array field. Although I think HTML parsing might be possible; it’s probably much easier to populate from a dictionary API.

Context sentences might possibly auto-populated by reusing Wanikani context sentences.

I don’t quite understand this one

Yeah, they aren’t editable. Might look into making that work, but I already have the drag action on it hooked up for moving it around and adding an edit button would most likely just waste a bunch of space and would look weird. So not sure.

Yeah, currently I don’t actually support a lot of fields. What field are you trying to import, that doesn’t have a proper representation, only html?

I actually had an idea of how importing sentences could work, because in anki, the deck I tried contained the english in one list and the japanese in another, so it could be combed together. Reusing sentences is a bit icky, because you could find a lot of false negatives, different meaning word with the same kanji, kanjis that just so happen to make a word, etc etc

Importing currently is bad. I can’t batch delete a field, or remap a field to another field, when I choose a wrong what-to-map-to. Mapping choices aren’t intuitive nor sorted.

For what happened, there were vocabularies with auto-filled Kanji dependencies, and those Kanji deps have more-than-one-character Kanji (i.e. not Kanji).

I tried deleting the deck, and re-importing. It said of the cards with same id exists, and importing succeeded with zero result.

I meant context sentences for this one. Probably { ja: string; en: string }[] or something? Other fields with similar feeling includes auxillary_*.

Yeah, it definitely needs some work for sure. I want to get a good vertical slice done before I start refining things. This way it’s easier to see what components of the system are the same or similar and it’s easier to make a consolidated requirements list for these.

Import is a weird beast, there is currently next to no validation behind it besides the obvious “characters need to be mapped and meaning needs to be mapped”. I have several ideas for more a ergonomic solutions for this problem, and I probably need to do some research on what the other’s are doing.

That’s strange, the deck was deleted and yet it still detected it as the same id? That either sounds like I don’t remove old decks from the cache or maybe there was another deck with that name or something. Gotta check

Interesting, I might attempt to write a pattern syntax for it that would allow for basically arbitrary field setups. Something like "<p lang=ja>$english$<\p>..." or similar. Though usually anki decks contain the non html version of these in some shape or form. There’s even a checkbox to not import these.

Edit: I noticed, that discourse interpreted my pattern to the best of its ability, so that’s bad

Any updates on kana-only vocab, the missing fields, etc.? Totally understandable if not, just curious! :grin:

Yeah, bit busy with school, I’m working on my finals project, so dev might be a bit slow at best for a bit.


Is it me or when I get an item in the review list, it end up being stuck in it? that is to say that even if I just finished reviewing them they are still present?
This seems to happen to me on both firefox and chrome.

That’s odd, haven’t heard of that bug yet. I will need to look at the preview wanikani changes either way, I’ll try to check on this bug then.

Incidentally, I tried to export and re-import my 14 item deck on my firefox, and rather than fix anything, I think it broke everything because it does not show any of the items in the review queue at all.

Export and import don’t transfer the review state (yet at least). They only save the actual card information

I’m sorry, I meant to say that I tried to export the deck, delete it from the firefox extansion and then re-import it, but none of the cards would show in either the lesson or the review lists.

oes this extension still work for people? For me it broke down as the new major WK update rolled out.

It probably does not, I’ll have to redo quite a bit of the extension most likely. But currently dealing with finals and trying to graduate, so during the summer most likely.

1 Like

Do you plan to continue work on this at some point?
Also, hope your finals went well :smiley:

Sorry, totally forgot to answer when I saw this.

Eventually, yes. It’s sadly a big project, and with all the things happening around me, I don’t dare to take it on, otherwise I will need to drop it again. Hopefully once I’m settled into my new job (should be about mid fall-ish, if I’m lucky, much earlier if they fire me :slight_smile: ), I can start work on it again. Theoretically also have the excuse of “sure, I was waiting for the wk team to finalize some stuff”.


To avoid bothering you more about this :sweat_smile: I’m thinking of seeing if I can write my own version of a custom vocab script, but would like to maintain deck compatibility with yours for if you do have time and work on it again! So I was just wondering if you have an example of the JSON scheme you use when exporting decks, so that I can try and keep that in mind when making my version?

Thanks, and I hope your new job is going well if you’ve started it!

interface CustomDeckExportData {
  exportDate: number;
  name: string;
  author: string;
  description: string;
  deckId: string;
  items: WKExportItem[];

interface WKExportItem {
  deckId: number;
  level: number;
  type: "rad" | "kan" | "voc";
  english: [string, ...string[]];
  characters: string;
  auxiliaryMeanings: AuxiliaryMeaning[];
  meaningMnemonic: string;

interface AuxiliaryMeaning {
  type: "blacklist" | "whitelist";
  meaning: string;

interface WKRadicalExportItem extends WKExportItem {
  type: "rad";
  characterImageUrl: string | null;
  kanji: number[];

interface WKKanjiExportItem extends WKExportItem {
  type: "kan";
  onyomi: string[];
  kunyomi: string[];
  nanori: string[];
  emphasis: "onyomi" | "kunyomi" | "nanori";
  meaningHint: string;
  readingHint: string;
  readingMnemonic: string;
  radicals: number[];
  vocabulary: number[];
  auxiliaryReadings: AuxiliaryReading[];

interface AuxiliaryReading {
  type: "blacklist" | "whitelist";
  reading: string;

interface WKVocabularyExportItem extends WKExportItem {
  type: "voc";
  audio: Audio[];
  kana: string[];
  readingMnemonic: string;
  kanji: number[];
  sentences: { japanese: string; english: string }[];
  collocations: Collocation[];
  partsOfSpeech: string[];
  auxiliaryReadings: AuxiliaryReading[];

interface Collocation {
  english: string;
  japanese: string;
  pattern_of_use: string;

interface Audio {
  url: string;
  content_type: string;
  pronunciation: string;
  voice_actor_id: number;

NGL, no clue how this worked anymore, the source code is still there, I’ll need to most likely rewrite most of the code from the ground up anyways whenever I get back to it. Don’t think this would be even perfectly suitable for kana only vocab either

Thank you! I’ve been in this job since the middle of September, and it is going amazingly well! Didn’t really have any notice time with my previous job, so they got 2 weeks.

1 Like

Hey there, was wondering if you had any update as to whether/when you could potentially return to this project? I love how Wanikani streamlines the SRS system, and would love to be able to add custom words/use it for sentence mining, but I haven’t found any other tool to do this unless WK itself allows me to do that somewhere now and I completely missed that option.