[Userscript] Burn Manager (Review / Resurrect / Retire)

Hi,

first of all I want to say this script is awesome and I’ve been using it for a while.
recently it stopped working but I think the problem is not with the script.

when I try to resurrect items it just doesn’t work anymore and by looking at the console I saw an error:
Failed to load resource: the server responded with a status of 404 (Not Found)

it appears that resurrecting items with the following path don’t work anymore: https://www.wanikani.com/retired/vocabulary/ITEM NAME?resurrect=true

any tips to solve this?

Yep, it looks like Wanikani has migrated the burn/resurrect features to the new site format, using the new item IDs. Since APIv1 doesn’t contain the new IDs (or any IDs, really), any fixes to this script are going to have to wait for my APIv2 framework, which I’m actively working on. :slightly_frowning_face:

Thanks a lot for the update! :slight_smile:
guess I’ll have to resurrect manually for now haha

I just installed this plugin and it doesn’t show anything. Note that I’m still on level 2. I put 1 on the first field, press preview, and nothing shows up. Just the level 1 title, but nothing inside!

In fact, the first thing I did was insert 1 , and press enter by mistake. What does enter mean in this form?

It will only show items that you have already burned, so the empty “Level 1” header means it didn’t find any burned items on level 1.

In this context, ‘enter’ just means ‘put something in the text box’.
It’s expecting a comma-separated list of Wanikani levels. You can specify individual levels (‘1,2,3’), a range of levels (‘1-3’), or a any combination of both (‘1-5,7,10-15,23’). Either way, you’ll need to burn some items first.

Oh! I thought this script could burn items I don’t want to learn.

Is there any? I’m B1 on japanese, and I already know lots of vacabulary from the first levels. I just want to get to what I want, I don’t care paying.

Thanks

No, it’s not possible. Wanikani has no way to skip content.

Since Wanikani is primarily a system for teaching kanji, not vocabulary, you aren’t taught vocab in the same order as you would encounter it in a classroom setting. They teach vocab in an order that best reinforces memorization of the kanji. And the kanji is learned in an order to best be reinforced by radicals.

In short, it may not take long for you to start encountering words and kanji that you don’t know. So, especially if finances aren’t an issue, just work your way through the free levels (they start out slow, but the workload builds up fairly quickly). Then, when you complete level 3, consider subscribing for a month. As a subscriber, you’ll be able to see the contents of all 60 levels. So, you can browse through each level and see how much you are likely to learn, and how soon you will start seeing content that you don’t know. You will still have to progress through the levels in order, but there are scripts you could use to practice ahead if you want.

1 Like

Hi all,

For some reason this script doesn’t work for me. It displays “Executing 0/XX” forever:


I tried with Chrome, Safari, and Firefox, on Mac OS and Windows, same result. I have also checked some other forums but couldn’t find anybody with the same problem.

I also contacted WK team and asked if they can resurrect burned items to a previous level, but they replied they don’t do that anymore.

Well, what I would just need at least is a mass resurrect of all burned items… But it seems that one has to rely on that single script, which doesn’t work for me…

Any thoughts?

Unfortunately, the script stopped working due to a recent change on Wanikani. It’s on my schedule to fix, but it’s going to take a few weeks before I get to it.

Basically, what happened is WK changed the format of the resurrect/retire link. It now uses item IDs instead of the item type and name. Unfortunately, the item IDs aren’t available in Wanikani API version 1 (APIv1), which is what this script uses. I’m in the process of converting all of my scripts to APIv2, which is why it’s going to take a while.

2 Likes

I see! Well, thank you very much for your prompt reply, and for taking time on this!

Can you update the input box to accept ‘Radical / Kanji / Vocab to resurrect, separated by comma’. Actually, I already have what I want to resurrect, here. Yes, this is the attempt to resurrect leeches.

|kanji|息| |kanji|領| |kanji|援| |vocabulary|分ける| |vocabulary|代用| |vocabulary|大作| |vocabulary|以前| |vocabulary|予定| |vocabulary|予想| |vocabulary|予約| |vocabulary|仏像| |vocabulary|動かす| |vocabulary|仏僧| |vocabulary|取り分け| |vocabulary|取れる| |vocabulary|地域| |vocabulary|支度| |vocabulary|用意| |vocabulary|行動|

@polv,
Burn Manager is temporarily broken due to a recent WK change. When I rewrite it to support APIv2, I will consider your request.

If you want to resurrect sooner, you would do it easily with your python script. You just need to add the item IDs to the resurrect URL.

Specifically, what … do I need?

  1. Authentication: Username + Passwords? API-v1? API-v2?
  2. Method: PUT?
  3. What data have to be sent to server?

The code I tried to put up, but didn’t succeed is this one.

url = 'https://www.wanikani.com/'
endpoint = 'assignments'
parameters = 'resurrect'
payload = {'inUserName': 'xxxxx@example.com', 'inUserPass': 'xxxxx'}

with requests.Session() as s:
	r = s.post('https://www.wanikani.com/login', data=payload)
	print r

	for a in array:
	    r = s.put(url+endpoint+'/'+a+'/'+parameters)
	    print url+endpoint+'/'+a+'/'+parameters
	    print r

After all, I don’t know how to inspect this

<a class="btn btn-mini resurrect-btn" rel="nofollow" data-method="put" href="/assignments/2940/resurrect">Resurrect</a>

It’s not an API url, so there’s no need for Authorization headers. Just open the dev console to the Network tab, then click ‘Resurrect’ on one of your burned items. The request should show up in Request section on the network tab, and you’ll be able to see all of the settings that WK uses. From what I remember, the authorization is built into the cookie, whicn is sent automatically. So, I think you just need a GET or PUT (I can’t remember which), with the correct URL containing the item ID, exactly as it appears on the network tab.

[I’m on my tablet, so I can’t look at the details right now]

[edit: Looking at the html you posted, I’m guessing you need a PUT, with just the url:

https://www.wanikani.com/assignments/<id>/resurrect

Oh… I just realized, you’re using Python, which means you have to simulate a login, and keep the session cookies, which contain the login authorization token.

When I get home tonight, I can send you the script I use for simulating logins.

I actually successfully logged in via headless browser → send cookies, but only GET request seems to work. PUT, nor POST doesn’t successfully resurrect.

driver = webdriver.PhantomJS(executable_path = r'./phantomjs')
site = 'https://www.wanikani.com/login'

print 'Opening ' + site
driver.get(site)

driver.find_element_by_id("user_login").send_keys("usernamexxxx")
driver.find_element_by_id("user_password").send_keys("passwordxxx")
driver.find_element_by_class_name("button").click()

cookie = driver.get_cookies()
s = requests.Session()

c = [s.cookies.set(c['name'], c['value']) for c in cookie]

but PUT doesn’t work. (I tested that I did log in with GET + page source)

response = s.put('https://www.wanikani.com/assignments/'+str(a)+'/resurrect')

nor

response = s.post('https://www.wanikani.com/assignments/'+str(a)+'/resurrect', data='_method=put')

EDIT: I actually succeeded with

driver.execute_script("$.ajax({url:'https://www.wanikani.com/assignments/"+str(a)+"/burn', method:'PUT'})")

Hmmm… I dont know why, but it seems to be permanently searching for the API key, any help on this?

This script is currently broken, since WK recently changed the URLs for resurrecting and retiring.
I’ll be fixing it this month (January) after finishing my Open Framework for Wanikani’s APIv2.

4 Likes

Just sent some emails asking for them to unburn all my burned items, but they don’t do that anymore.

Is an update for this still scheduled in January? :slight_smile:

It may be the first week of February. I’ve decided this will be the first script I convert to APIv2 since it’s currently broken, and the end of APIv1 support is still at least a few months away.

2 Likes