Douki Userscript Edition - sync your Anilist.co anime list to MAL
Disclaimer
Use this script at your own risk! The author assumes no responsibility for any damages of any kind. It is strongly recommended you test this out on a throwaway MAL account before attempting to sync your main account.
About
So you're an Anilist user (perhaps you came over after MAL melted down) but you still want to keep your MAL page up to date for all your friends who still use it. Douki can sync your Anilist lists to MAL with the click of a button.
Unfortunately, given that MAL shut down its public API over security concerns, the only way to modify a MAL list is from the MAL site itself. Thus, Douki is no longer a standalone web app but a userscript that can run right on MAL and use its API.
Usage
- Install a userscript manager (choose one from this list)
- Install the script here
- Visit the import page on Myanimelist.net. You need to be logged in to MAL.
- Alternatively, a link to the import page is added to the List dropdown at the top of the main page
- Make sure the date format matches your setting on MAL (US or Euro).
- Fill in your Anilist username and hit
Import
Notes
- The most common source of errors are titles that are not yet approved on Myanimelist. These cannot be added even manually. Before reporting errors, check to see if you can add an item manually. If you can't add it, neither can Douki.
- All custom scoring formats on Anilist (1-5, 1-100, stars) will be converted to MAL's 1-10 system. The scores will round down (i.e. a 95 will become a 9). This follows an established community practice.
- Custom lists will be imported into the main MAL list.
- Private lists will be ignored.
- Tags and notes will be ignored. Keeping these consistent across the two sites is too difficult for now. I am open to attempting this in the future, but no promises.
- Due to a quirk with MAL's site, changing the number of times you've rewatched a show or reread a manga alone will not trigger an update. You need to also change status, episode/chapter count, or score for the script to pick up on a change and update the entry.
All suggestions, feedback, or bug reports are welcome.
Oh wow, you're quick.
I had most of the work done already from trying to do this with APIv1, and I already kind of knew GraphQL from another project. Wasn't too hard to make a few adjustments!
you are my hero,
i just snyced over 1000 anime, with only 1 error and that was Akagami no Shirayuki-hime 2nd Season
I haven't updated MAL in months. You're a lifesaver! :) I'm glad I tested this on a second account first like you advised; I forgot about my smiley ratings which ended up transferring as 3s, 2s, and 1s. I'll just have to change my score system or clear out my scores before syncing to my real account. Seems to work perfectly fine otherwise.
Glad I could help. I'll look into handling custom scoring. Offhand I don't think MAL supports anything other than the 1-10 system but it might be possible to set up a conversion for people who use different scoring systems on AL.
With Api v2 you can specify an argument on the score field to set it to which ever score type you would like, by default it will return the scores in which ever format the user is using.
I think
score (format: POINT_10)
should do it but docs here https://anilist.github.io/ApiV2-GraphQL-Docs/medialist.doc.htmlHelpful as always. Thanks!
Did an update and custom scoring should automatically convert to MAL's 1-10 system now. Try it out again before you mess up all your scores (again on a temp account)!
Thanks, looks good now!
Reporting in, synced 191 shows. Worked perfectly, thanks!
It is still running for me so I am not sure, does it only support anime? Would it be possible to make it support manga as well?
Thanks for doing this by the way, my mal list is really outdated since I moved here
Glad you liked it, I'll look into adding manga support soon. It shouldn't be too hard, I just have to find the time.
I dont know if this is intentional but the rounding is off. Shows that are scored at 87 on anilist are synced as an 8 on MAL.
Thanks for letting me know. Currently I'm using the rounding results from Anilist (so in that sense it's intentional). I'll get back to you after I talk to the Anilist folks about whether they plan to change it, if not it shouldn't be too hard to have Douki do it instead.
All right I asked and it turns out there are good reasons for leaving the rounding like that (a lot of people get unhappy when you round a 95 up to a 10, etc.) so I'll be leaving it as is. Thanks for asking though!
Fair enough.
feature request: I use mal by logging in with google, douki seems to only work with username + password and not oauth2 like mal. so please add `Login with ${x}` support.
I had that exact same issue. I just changed my MAL password and then it worked.
Thanks for the suggestion! I don't think MAL's API currently allows for this type of authentication (you can use oauth2 to log in and use their site, but not their backend service). I will look into possible workarounds, but I think for now this is the best that can be done. MAL has promised to revamp their service, in their words, "in our 2017-2018 roadmap." At that point it will almost surely be possible.
for now I guess I'll just change the password
Thank you! I hadn't updated my MAL in forever, so this was a life saver!! ^^
The only error I got (besides 2 "This anime has not been approved yet" ones) was:
"Could not match a.i.c.o. -incarnation-: Invalid ID"
I added manga list support. Please give it a try, but again use a temporary account first, and please let me know if you experience any problems.
For some reason, it doesn't seem to be syncing my completed anime anymore? At first I thought it was because I use a custom list for my seasonal watching, but I recently completed Anne Happy and Tokyo Ghoul, which were never on custom lists, and they're still marked as on-hold and watching on my MAL after syncing. I'm not sure what the problem is?
I'll try to replicate and see what's going on. Thanks for reporting this.
Edit: I found the issue, when I query the Anilist API for your data it literally does not return any completed shows. It returns all the shows you've paused, plan to watch, etc. but nothing you've marked completed. Let me see if I can figure out why that is the case.
It does look like the use of custom lists here is causing an issue. I'll spare you the technical details but this is something both Anilist and I need to fix, and we're working on it. As a bonus I'll have to enable custom list support to fix this issue so that will be rolling out as a new feature as soon as I can complete it.
Okay, thank you.
Worked for me with only one error
Could not match Momokuri (tv): This anime has not been approved yet.
(just curious whats the technical stuff behind this error?)
I believe MAL doesn't have the TV version of Momokuri since it was just the ONA version with two episodes played back to back, so they decided not to list it separately. Same thing with things like Psycho-Pass New Edit Version.
I saw that Anilist had a 'MAL Sync' But i didn't see any 'reverse Sync' from Anilist to MAL, so thank you so much.
@solitethos
Also, you said;
Update 1: If you use a scoring system on AL other than 1-10, Douki should now automatically convert it to 1-10 for use on MAL. Please let me know if you experience any problems with this feature.
Any chance of this importing the dates from here to MyAnimeList? Importing another site to MAL messed that up but here has most of that data.
I'll try to take a look at doing this. I initially shied away from it because dates are really tricky to get right sometimes. I don't know exactly when I'll have time to spare but this will be the next feature I tackle.
Latest update should cover this feature.
You. are. a. life. saviour! Thank you sooo much! :) Worked perfectly (The app has problem with Hentai and Not yet aired mostly)
Yeah, anything that MAL hasn't approved for their page won't go through obviously, and there are a few shows that MAL and AL store differently for their own reasons. Hentai I'm not sure about - what errors are you seeing?
This is a lifesaver, thank you so much!