popura
popura copied to clipboard
[MAL API is down 😉] NodeJS wrapper for MyAnimeList API
popura
NodeJS wrapper for MyAnimeList API
Image by yotsu
Popura is a promise-returning wrapper for MAL API.
Warning
MAL API is broken. Popura wont work until they solve their internal issues.
Table of Contents
- Install
- Usage
- API
- Models
- Anime Model
- Manga Model
- Anime List Item Model
- Manga List Item Model
- Myinfo Model
- Development
- License
Install
$ npm install --save popura
Usage
import popura from 'popura';
const client = popura('YourAwesomeUsername', 'YourHackablePassword');
client.getAnimeList()
.then(res => console.log(res))
.catch(err => console.log(err));
API
.getUser()
Return the current user's username.
.setUser(username, password)
Change the current user in this client instance.
.verifyAuth()
Check if this user is valid.
Returns Promise
=> {id, username}
.
.searchAnimes(name)
and .searchMangas(name)
Search for an anime or manga title by name
.
Returns Promise
=> Array of Anime Models | Manga Models.
.getAnimeList(username = this.user)
and .getMangaList(username = this.user)
Get the animelist or mangalist from an user. If username
is empty, returns current user's list.
Returns Promise
=> {myinfo, list}
where myinfo
is a Myinfo Model and list
is an array of Anime List Item Models | Manga List Item Models.
.addAnime(id, values = {})
and .addManga(id, values = {})
Inserts an anime or manga with id
into your list. Optionally you can define values
from Anime Models | Manga Models.
Returns Promise
=> Raw response.body
.
.updateAnime(id, values = {})
and updateManga(id, values = {})
Changes values
from an anime or manga with id
in your list. Define values
from Anime Models | Manga Models.
Returns Promise
=> Raw response.body
.
.deleteAnime(id)
and deleteManga(id)
Removes an anime or manga with id
from your list.
Returns Promise
=> Raw response.body
.
Models
Anime Model
Model used to add/update animes
Property | Type | Note |
---|---|---|
episode | int | |
status | int or string |
1 / watching , 2 / completed , 3 / onhold , 4 / dropped , 6 / plantowatch |
score | int |
|
storage_type | int |
|
storage_value | float |
|
times_rewatched | int |
|
rewatch_value | int |
|
date_start | date |
mmddyyyy |
date_finish | date |
mmddyyyy |
priority | int |
|
enable_discussion | int |
1 = enable, 0 = disable |
enable_rewatching | int |
1 = enable, 0 = disable |
comments | string |
|
fansub_group | string |
|
tags | array |
Manga Model
Model used to add/update mangas
Property | Type | Note |
---|---|---|
chapter | int | |
volume | int | |
status | int or string |
1 / reading , 2 / completed , 3 / onhold , 4 / dropped , 6 / plantoread |
score | int |
|
times_reread | int |
|
reread_value | int |
|
date_start | date |
mmddyyyy |
date_finish | date |
mmddyyyy |
priority | int |
|
enable_discussion | int |
1 = enable, 0 = disable |
enable_rereading | int |
1 = enable, 0 = disable |
comments | string |
|
scan_group | string |
|
tags | array |
|
retail_volumes | int |
Anime List Item Model
Model you receive from API when requesting anime list
Property | Type | Note |
---|---|---|
series_animedb_id | int |
|
series_title | string |
|
series_synonyms | array |
|
series_type | int |
1 = TV , 2 = OVA , 3 = Movie , 4 = Special , 5 = ONA , 6 = Music |
series_episodes | int |
|
series_status | int |
1 = Airing , 2 = Finished , 3 = Not Yet Aired |
series_start | date |
mmddyyyy |
series_end | date |
mmddyyyy |
my_id | int |
|
my_watched_episodes | int |
|
my_start_date | date |
mmddyyyy |
my_finish_date | date |
mmddyyyy |
my_score | int |
|
my_status | int |
1 = watching , 2 = completed , 3 = onhold , 4 = dropped , 6 = plantowatch |
my_rewatching | int |
|
my_rewatching_ep | int |
|
my_last_updated | date |
mmddyyyy |
my_tags | array |
Manga List Item Model
Model you receive from API when requesting anime list
Property | Type | Note |
---|---|---|
series_mangadb_id | int |
|
series_title | string |
|
series_synonyms | array |
|
series_type | int |
TODO: figure out the meaning of these int s |
series_chapters | int |
|
series_volumes | int |
|
series_status | int |
TODO: figure out the meaning of these int s |
series_start | date |
mmddyyyy |
series_end | date |
mmddyyyy |
my_id | int |
|
my_read_chapters | int |
|
my_read_volumes | int |
|
my_start_date | date |
mmddyyyy |
my_finish_date | date |
mmddyyyy |
my_score | int |
|
my_status | int |
1 = reading , 2 = completed , 3 = onhold , 4 = dropped , 6 = plantoread |
my_rereading | int |
|
my_rereading_chap | int |
|
my_last_updated | date |
mmddyyyy |
my_tags | array |
Myinfo Model
Property | Type | Note |
---|---|---|
user_id | int |
|
user_name | string |
|
user_watching | int |
Only for anime |
user_reading | int |
Only for manga |
user_completed | int |
|
user_onhold | int |
|
user_dropped | int |
|
user_plantowatch | int |
Only for anime |
user_plantoread | int |
Only for manga |
user_days_spent_watching | float |
Yes, they use 'watching' for manga too |
Development
After clonning this repo, you must copy .env.sample
to .env
and put your MAL username and password.
In some tests, it'll add, update and remove one anime and one manga from your lists. You can specify these two at .env
. Defaults to anime Tachumaru Gekijou (id = 9562) and manga Junshin Miracle 100% (id = 94483), two not so known titles.
License
MIT