2.13.1 • Published 10 months ago

mal-scraper v2.13.1

Weekly downloads
3,777
License
MIT
Repository
github
Last release
10 months ago

At the moment, MalScraper allows one to:

  • Gather information about all the anime being released in a season.
  • Gather anime-related news (include light-novels, manga, films...). 160 news available.
  • Make an anime search (in 2 different ways!).
  • Get different information for this anime.
  • Get only the best result for an anime search.
  • Get a list of an anime's episodes.
  • Access the full official MyAnimeList API (includes search, add, update and delete from your user watch lists).

MalScraper is being developed mainly for KawAnime but anyone can use it for its own purpose.

Any contribution is welcomed.

Tables of content:

Installation

npm install --save mal-scraper

Use

const malScraper = require('mal-scraper')

Methods

search.search()

ParameterTypeDescription
typestringtype of search (manga or anime)
optsobjectoptions for search (all keys are optional)

Usage example:

const malScraper = require('mal-scraper')
const search = malScraper.search

const type = 'anime'

// Helpers for types, genres and list you might need for your research
console.log(search.helpers)

search.search(type, {
  // All optionnals, but all values must be in their relative search.helpers.availableValues.
  maxResults: 100, // how many results at most (default: 50)
  has: 250, // If you already have results and just want what follows it, you can say it here. Allows pagination!

  term: 'Sakura', // search term
  type: 0, // 0-> none, else go check search.helpers.availableValues.type
  status: 0, // 0 -> none, else go check https://github.com/Kylart/MalScraper/blob/master/README.md#series-statuses-references or search.helpers.availableValues.status
  score: 0, // 0-> none, else go check search.helpers.availableValues.score
  producer: 0, // go check search.helpers.availableValue.p.<type>.value
  rating: 0, // 0-> none, else go check search.helpers.availableValues.r
  startDate: {
    day: 12,
    month: 2,
    year: 1990
  },
  endDate: {
    day: 12,
    month: 2,
    year: 2015
  },
  genreType: 0, // 0 for include genre list, 1 for exclude genre list
  genres: [1] // go check search.helpers.availableValues.genres.<type>.value
})
  .then(console.log)
  .catch(console.error)

Returns: A Anime search model or Manga search model object

getInfoFromName()

ParameterTypeDescription
NamestringThe name of the anime to search, the best match corresponding to that name will be returned
getBestMatchBooleanWhether you want to use match-sorter to find the best result or not (defaults to true)
typestringThe type, can be either manga or anime. Default is anime

Usage example:

const malScraper = require('mal-scraper')

const name = 'Sakura Trick'

malScraper.getInfoFromName(name)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

// same as
malScraper.getInfoFromName(name, true)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

malScraper.getInfoFromName(name, false)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

// same as
malScraper.getInfoFromName(name, true, 'anime')
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

malScraper.getInfoFromName(name, false, 'anime')
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: A Anime data model object

getInfoFromURL()

This method is faster than getInfoFromName() as it only make one HTTP request

ParameterTypeDescription
URLstringThe URL to the anime

Usage example:

const malScraper = require('mal-scraper')

const url = 'https://myanimelist.net/anime/20047/Sakura_Trick'

malScraper.getInfoFromURL(url)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: A Anime data model object (same as getInfoFromName())

getResultsFromSearch()

ParameterTypeDescription
querystringThe search query
typestringThe type, can be either manga or anime. Default is anime

Usage example:

const malScraper = require('mal-scraper')

const query = 'sakura'

malScraper.getResultsFromSearch(query, 'anime')
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: An array of a maximum length of 10 containing Search result data model objects

getSeason()

This method get the list of anime, OVAs, movies and ONAs released (or planned to be released) during the season of the specified year

ParameterOptionalTypeDescription
yearNonumberThe year
seasonNostringThe season, must be either spring, summer, fall or winter
typeYesstringThe type, must be either TV, TVNew, TVCon, ONAs, OVAs, Specials or Movies

Usage example:

const malScraper = require('mal-scraper')

const year = 2017
const season = 'fall'

malScraper.getSeason(year, season)
  // `data` is an object containing the following keys: 'TV', 'TVNew', 'TVCon', 'OVAs', 'ONAs', 'Movies' and 'Specials'
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: A Seasonal release data model object

With type parameter:

Please note: 'TVNew' represents the 'New' anime for this season, whilst 'TVCon' represents the 'Continuing' anime in this season. 'TV' is simply an aggregate for both of these.

const malScraper = require('mal-scraper')

const year = 2017
const season = 'fall'
const type = 'TV' // Optional type parameter, if not specified will default to returning an object with all of possible type keys

malScraper.getSeason(year, season, type)
  // `data` is an array containing all the 'Seasonal anime release data objects' for the given type
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: A Seasonal anime release data model object

getWatchListFromUser()

From v2.11.6

ParameterTypeDescription
usernamestringThe name of the user
afternumberUseful to paginate. Is the number of results you want to start from. By default, MAL returns 300 entries only.
typestringOptional, can be either anime or manga
statusnumberOptional, Status in the user's watch list (completed, on-hold...)

Usage example:

const malScraper = require('mal-scraper')

const username = 'Kylart'
const after = 25
const type = 'anime' // can be either `anime` or `manga`
const status = 7 // All anime

// Get you an object containing all the entries with status, score... from this user's watch list
malScraper.getWatchListFromUser(username, after, type, status)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

From v2.6.0

ParameterTypeDescription
usernamestringThe name of the user
afternumberUseful to paginate. Is the number of results you want to start from. By default, MAL returns 300 entries only.
typestringOptional, can be either anime or manga

Usage example:

const malScraper = require('mal-scraper')

const username = 'Kylart'
const after = 25
const type = 'anime' // can be either `anime` or `manga`

// Get you an object containing all the entries with status, score... from this user's watch list
malScraper.getWatchListFromUser(username, after, type)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: A User watch list data model object

v2.5.2 and before

ParameterTypeDescription
usernamestringThe name of the user
typestringOptional, can be either anime or manga

Usage example:

const malScraper = require('mal-scraper')

const username = 'Kylart'
const type = 'anime' // can be either `anime` or `manga`

// Get you an object containing all the entries with status, score... from this user's watch list
malScraper.getWatchListFromUser(username, type)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: A User watch list data model object

getNewsNoDetails()

ParameterTypeDescription
nbNewsnumberThe count of news you want to get, default is 160. Note that there is 20 news per page, so if you set it to 60 for example, it will result in 3 requests. You should be aware of that, as MyAnimeList will most likely rate-limit you if more than 35-40~ requests are done in a few seconds

Usage example:

const malScraper = require('mal-scraper')

const nbNews = 120

malScraper.getNewsNoDetails(nbNews)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: An array of News data model objects

getEpisodesList()

ParameterTypeDescription
animeobject OR stringIf an object, it must have the name and id property. If you only have the name and not the id, you may call the method with the name as a string, this will be slower but the id will be automatically fetched on the way
anime.namestringThe name of the anime
anime.idnumberThe unique identifier of this anime

Usage example:

const malScraper = require('mal-scraper')

malScraper.getEpisodesList({
  name: 'Sakura Trick',
  id: 20047
})
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

//Alternatively, if you only have the name and not the id, you can let the method fetch the id on the way at the cost of being slower

const name = "Sakura Trick"

malScraper.getEpisodesList(name)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: An array of Anime episodes data model objects

getReviewsList()

ParameterTypeDescription
animeobjectAn object that must have the name and id property or just the name alone. If you only have the name and not the id, you may call the method with the name as a string, this will be slower but the id will be automatically fetched on the way
anime.namestringThe name of the anime
anime.idnumberThe unique identifier of this anime
anime.limitnumberoptionnal The number max of reviews to fetch - can be really long if omit
anime.skipnumberoptionnal The number of reviews to skip

Usage example:

const malScraper = require('mal-scraper')

malScraper.getReviewsList({
  name: 'Sakura Trick',
  id: 20047,
  limit: 1,
  skip: 20
})
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

//Alternatively, if you only have the name and not the id, you can let the method fetch the id on the way at the cost of being slower

const name = "Sakura Trick"

malScraper.getReviewsList({
  name: 'Sakura Trick',
  limit: 1,
  skip: 20
})
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: An array of Anime reviews data model objects

getRecommendationsList()

ParameterTypeDescription
animeobject OR stringIf an object, it must have the name and id property. If you only have the name and not the id, you may call the method with the name as a string, this will be slower but the id will be automatically fetched on the way
anime.namestringThe name of the anime
anime.idnumberThe unique identifier of this anime

Usage example:

const malScraper = require('mal-scraper')

malScraper.getRecommendationsList({
  name: 'Sakura Trick',
  id: 20047
})
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

//Alternatively, if you only have the name and not the id, you can let the method fetch the id on the way at the cost of being slower

const name = "Sakura Trick"

malScraper.getRecommendationsList(name)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: An array of Anime recommendations data model objects

getStats()

ParameterTypeDescription
animeobject OR stringIf an object, it must have the name and id property. If you only have the name and not the id, you may call the method with the name as a string, this will be slower but the id will be automatically fetched on the way
anime.namestringThe name of the anime
anime.idnumberThe unique identifier of this anime
const malScraper = require('mal-scraper')

malScraper.getStats({
  name: 'Ginga Eiyuu Densetsu',
  id: 820
})
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

//Alternatively, if you only have the name and not the id, you can let the method fetch the id on the way at the cost of being slower

const name = "Ginga Eiyuu Densetsu"

malScraper.getStats(name)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: An array of Anime stats data model objects

getPictures()

ParameterTypeDescription
animeobject OR stringIf an object, it must have the name and id property. If you only have the name and not the id, you may call the method with the name as a string, this will be slower but the id will be automatically fetched on the way
anime.namestringThe name of the anime
anime.idnumberThe unique identifier of this anime
const malScraper = require('mal-scraper')

malScraper.getPictures({
  name: 'Ginga Eiyuu Densetsu',
  id: 820
})
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

//Alternatively, if you only have the name and not the id, you can let the method fetch the id on the way at the cost of being slower

const name = "Ginga Eiyuu Densetsu"

malScraper.getPictures(name)
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: An array of Anime pictures data model objects

getUser()

ParameterTypeDescription
namestringThe username of the user
  const malScraper = require('mal-scraper')

malScraper.getUser('Kame-nos')
  .then((data) => console.log(data))
  .catch((err) => console.log(err))

Returns: A User data model

Data models

Anime data model

You should treat all properties as possibly undefined/empty, the only guaranteed properties are title, type and id

PropertyTypeDescription
titlestringThe title of the anime
synopsisstringThe synopsis of the anime
picturestringThe URL of the cover picture of the anime
charactersarrayAn array of Character data model objects
staffarrayAn array of Staff data model objects
trailerstringURL to the embedded video
englishTitlestringThe english title of the anime
synonymsstringA list of synonyms of the anime title (other languages names, related ovas/movies/animes) separated by commas, like "Sakura Trick, Sakura Trap"
typestringThe type of the anime, can be either TV, OVA, Movie or Special
episodesstringThe number of aired episodes
statusstringThe status of the anime (whether it is airing, finished...)
airedstringThe date from which the airing started to the one from which it ended, this property will be empty if one of the two dates is unknown
premieredstringThe date of when the anime has been premiered
broadcaststringWhen the anime is broadcasted
volumesstringThe number of volumes of the novel
chaptersstringThe numbers of chapters of the novel
publishedstringThe dates of publications of the novel
authorsstringThe authors of the novel
serializationstringThe serialization of the novel
producersarrayAn array of the anime producers
studiosarrayAn array of the anime producers
sourcestringOn what the anime is based on (e.g: based on a manga...)
genresarrayAn array of the anime genres (Action, Slice of Life...)
durationstringAverage duration of an episode (or total duration if movie...)
ratingstringThe rating of the anime (e.g: R18+..), see the List of possible ratings
scorestringThe average score
scoreStatsstringBy how many users this anime has been scored, like "scored by 255,693 users"
rankedstringThe rank of the anime
popularitystringThe popularity of the anime
membersstringHow many users are members of the anime (have it on their list)
favoritesstringCount of how many users have this anime as favorite
idnumberThe unique identifier of the anime
urlstringthe URL to the page

List of possible ratings

Anime ratings can be either:

  • G - All Ages
  • PG - Children
  • PG-13 - Teens 13 or older
  • R - 17+ (violence & profanity)
  • R+ - Mild Nudity
  • Rx - Hentai

Anime search model

PropertyTypeDescription
thumbnailstringFull url for anime thumbnail
urlstringFull url for anime page
videostringfull url of anime trailer video if any
shortDescriptionstringShort description of the anime (or manga)
titlestringAnime title
typestringAnime type
nbEpsstringAnime number of episodes
scorestringAnime score
startDatestringAnime start date
endDatestringAnime end date
membersstringAnime number of members
ratingstringAnime rating

Manga search model

PropertyTypeDescription
thumbnailstringFull url for anime thumbnail
urlstringFull url for anime page
videostringfull url of anime trailer video if any
shortDescriptionstringShort description of the anime (or manga)
titlestringAnime title
typestringAnime type
scorestringAnime score
nbChaptersstringNumber of chapters released so far
volsstringNumber of volumes released so far
startDatestringAnime start date
endDatestringAnime end date
membersstringAnime number of members

Staff data model

PropertyTypeDescription
linkstringLink to the MAL profile of this person
picturestringLink to a picture of the person at the best possible size
namestringTheir name and surname, like Surname, Name
rolestringThe role this person has/had in this anime (Director, Sound Director...)

Character data model

PropertyTypeDescription
linkstringLink to the MAL profile of this character
picturestringLink to a picture of the character at the best possible size
namestringTheir name and surname, like Surname, Name
rolestringThe role this person has/had in this anime (Main, Supporting...)
seiyuuobjectAn object containing additional data about who dubbed this character
seiyuu.linkstringLink to the MAL profile of who dubbed this character
seiyuu.picturestringLink to a picture of the seiyuu at the best possible size
seiyuu.namestringTheir name and surname, like Surname, Name

Search result data model

PropertyTypeDescription
idnumberThe unique identifier of this result
typestringThe type of the result (e.g: anime...)
namestringThe title of the anime
urlstringThe URL to the anime
image_urlstringURL of the image
thumbnail_urlstringURL of the thumbnail image
es_scorenumberA number representing the accuracy of the result, where 1 is a perfect match and 0 a totally irrelevant one
payloadobjectAn object containing additional data about the anime
payload.media_typestringThe type of the anime, can be either TV, Movie, OVA or Special
payload.start_yearnumberThe year the airing of the anime started
payload.airedstringThe date from which the airing started to the one from which it ended
payload.scorestringThe average score given to this anime
payload.statusstringThe current status of the anime (whether it is still airing, finished...)

Seasonal release data model

Note: If nothing is found for the given date, the current year/season releases list will be returned

PropertyTypeDescription
TVarrayAn array of Seasonal anime release data model objects
TVNewarrayAn array of Seasonal anime release data model objects
TVConarrayAn array of Seasonal anime release data model objects
OVAsarrayAn array of Seasonal anime release data model objects
ONAsarrayAn array of Seasonal anime release data model objects
MoviesarrayAn array of Seasonal anime release data model objects
SpecialsarrayAn array of Seasonal anime release data model objects

Seasonal anime release data model

PropertyTypeDescription
picturestringLink to the picture of the anime
synopsisstringThe synopsis of the anime
licensorstringThe licensor
titlestringThe name of the anime
linkstringThe direct link to the anime page
genresarrayAn array of strings which are the genres of this anime
producersarrayAn array of strings which are the producers of this anime
fromTypestringFrom what this anime is based on/an adaptation of (Light novel, manga...)
nbEpstringThe number of aired episodes this anime has
releaseDatestringWhen this anime has been released
scorestringThe average score users have given to this anime

User watch list data model

v2.6.0

An array of User anime entry data model objects or User manga entry data model

v2.5.2 and before

PropertyTypeDescription
statsobjectA User stats data model object
listsarrayAn array of User anime entry data model objects or User manga entry data model

User stats data model

PropertyTypeDescription
TVstringNumber of TV anime this user watched
OVAstringNumber of OVA anime this user watched
MoviesstringNumber of Movies anime this user watched
SpclstringNumber of special anime this user watched
ONAstringNumber of ONA anime this user watched
DaysstringNumber of days spent in front of anime for this user
EpsstringNumber of eps watched by this user
MeanScorestringMean score given by this user
ScoreDevstringScore deviation for this user

User anime entry data model

PropertyTypeDescription
statusintegerStatus of the anime in the user's watch list (completed, on-hold...), see the Statuses references
scoreintegerScore given by the user
tagsstringanime tags for this anime. Tags are separated by a comma
isRewatchingintegerWhther this user is rewatching this anime
numWatchedEpisodes:integerNumber of episodes this user watched for this anime
animeTitlestringThe title of the anime
animeNumEpisodesintegerHow many episodes this anime has
animeAiringStatusstringThe status of the anime, see the Series statuses references
animeIdstringThe unique identifier of this anime
animeStudiosstringStudios of this anime
animeLicensorsstringWho licensed this anime
animeSeasonstring???
hasEpisodeVideobooleanWhether episode information are available on MAL
hasPromotionVideobooleanWhether anime trailer is available on MAL
videoUrlstringpath to video url on MAL
animeUrlstringpath to anime url on MAL
animeImagePathstringpath to anime thumbnail url on MAL
isAddedToListboolean???
animeMediaTypeStringstringType of this anime
animeMpaaRatingStringstringRating of this anime
startDateStringstringWhen did this user start watching it
finishDateStringstringWhen did this user finish it
animeStartDateStringstringStart date of the anime following the format (MM-DD-YYYY)
animeEndDateStringstringEnd date of the anime following the format (MM-DD-YYYY)
daysStringstring???
storageStringstringStorage type for this anime (set by the user)
priorityStringstringPriority of this anime for the user

User manga entry data model

PropertyTypeDescription
myIDstringDeprecated
statusstringStatus of the manga in the user's watch list (completed, on-hold...), see the Statuses references
scorestringThe score the user has given to this manga
tagsstringThe tags the user has given to this manga
isRereadingstringWhether the user is re-reading this manga or not, where 0 means not
nbReadChaptersstringCount of how many chapters of this manga the user has read
nbReadVolumesstringCount of how many volumes of this manga the user has read
mangaTitlestringThe title of the manga
mangaNumChaptersstringTotal count of chapters this manga has
mangaNumVolumesstringCount of volumes this manga has
mangaPublishingStatusstringThe status of the manga, see the Series statuses references
mangaIdstringThe unique identifier of this manga
mangaMagazinesstringMagazines where this manga airs
mangaUrlstringPath to manga page
mangaImagePathstringpath to manga thumbnail
isAddedToListboolean???
mangaMediaTypeStringstringThe type of the manga, see the Types references
startDateStringstringA mm-dd-yyyy format date of when the user started watching this manga
finishDateStringstringA mm-dd-yyyy format date of when the user finished watching this manga
mangaStartDateStringstringA mm-dd-yyyy format date of when the manga started
mangaEndDateStringstringA mm-dd-yyyy format date of when the manga ended
daysStringstring???
retailStringstring???
priorityStringstringPriority of this manga for the user

The types, statuses and series statuses aren't explicitly given by MyAnimeList, a number is given instead, here's the corresponding statuses/types according to their numbers

Types references

  • 0: Unknown
  • 1: TV | Manga
  • 2: OVA | Novel
  • 3: Movie | One-shot
  • 4: Special | Doujinshi
  • 5: ONA | Manhwha
  • 6: Music | Manhua

Statuses references

  • 1: Watching | Reading
  • 2: Completed
  • 3: On-hold
  • 4: Dropped
  • 6: Plan-to-watch | Plan-to-read

Series statuses references

  • 1: Currently airing | Publishing
  • 2: Finished airing | Finished
  • 3: Not yet aired | Not yet published

News data model

PropertyTypeDescription
titlestringThe title of the news
linkstringThe link to the article
imagestringURL of the cover image of the article
textstringA short preview of the news description
newsNumberstringThe unique identifier of the news

Anime reviews data model

PropertyTypeDescription
authorstringThe name of the author
datedateThe date of the comment
seenstringThe number of episode seen
overallnumberThe overall note of the anime
storynumberThe story note of the anime
animationnumberThe animation note of the anime
soundnumberThe sound note of the anime
characternumberThe character note of the anime
enjoymentnumberThe enjoyment note of the anime
reviewstringThe complete review

Anime recommendations data model

PropertyTypeDescription
pictureImagedateThe link of the picture's anime recommended
animeLinkstringThe link of the anime recommended
animenumberThe name of the anime recommended
mainRecommendationnumberThe recommendation
authorstringThe name of the author

Anime episodes data model

PropertyTypeDescription
epNumbernumberThe episode number
airedstringA "Jan 10, 2014" date like of when the episode has been aired
discussionLinkstring-
titlestringThe title of the episode
japaneseTitlestringThe japanese title of the episode

Anime search results data model

PropertyTypeDescription
idstringThe unique identifier of this anime
titlestringThe title of the anime
englishstringThe english title of the anime
synonymsstringA set of synonyms of this anime
episodesstringThe total count of aired episodes this anime has
scorestringThe average score given by users to this anime
typestringThe type of the anime (TV, OVA...)
statusstringThe status of the anime (Airing, Finished airing...)
start_datestringA yyyy-mm-dd date format of when the anime started to be aired
end_datestringA yyyy-mm-dd date format of when the anime finished
synopsisstringThe synopsis of the anime
imagestringURL to the cover image of the anime

Manga search results data model

PropertyTypeDescription
idstringThe unique identifier of this manga
titlestringThe title of the manga
englishstringThe english title of the manga
synonymsstringA set of synonyms of this manga
chaptersstringThe total count of chapters this manga has
volumesstringThe total count of volumes this manga has
scorestringThe average score given by users to this manga
typestringThe type of the manga (Manga, Doujinshi...)
statusstringThe status of the manga (Publishing, Finished...)
start_datestringA yyyy-mm-dd date format of when the manga started publication
end_datestringA yyyy-mm-dd date format of when the manga finished
synopsisstringThe synopsis of the manga
imagestringURL to the cover image of the manga

Anime stats data model

PropertyTypeDescription
watchingnumberThe total number of person who are watching the anime
completednumberThe total number of person who completed the anime
onHoldnumberThe total number of person who stop watching the anime but will continue later
droppednumberThe total number of person who stop watching the anime
planToWatchnumberThe total number of person who plan to watch the anime
totalnumberTotal of stats
score10numberThe number of person ranking the anime with a 10/10
score9numberThe number of person ranking the anime with a 9/10
score8numberThe number of person ranking the anime with a 8/10
score7numberThe number of person ranking the anime with a 7/10
score6numberThe number of person ranking the anime with a 6/10
score5numberThe number of person ranking the anime with a 5/10
score4numberThe number of person ranking the anime with a 4/10
score3numberThe number of person ranking the anime with a 3/10
score2numberThe number of person ranking the anime with a 2/10
score1numberThe number of person ranking the anime with a 1/10

Anime pictures data model

PropertyTypeDescription
imageLinknumberThe link of the image

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request.

License

MIT License

Copyright (c) Kylart

2.13.0

10 months ago

2.13.1

10 months ago

2.12.1

1 year ago

2.12.0

1 year ago

2.11.4

2 years ago

2.11.3

3 years ago

2.11.2

4 years ago

2.11.1

4 years ago

2.11.0

4 years ago

2.10.0

4 years ago

2.9.0

4 years ago

2.8.0

4 years ago

2.7.2

4 years ago

2.7.1

4 years ago

2.6.9

4 years ago

2.6.8

4 years ago

2.6.7

4 years ago

2.6.6

4 years ago

2.6.5

4 years ago

2.6.4

5 years ago

2.6.3

5 years ago

2.6.2

5 years ago

2.6.1

5 years ago

2.6.0

5 years ago

2.5.2

5 years ago

2.5.1

5 years ago

2.5.0

5 years ago

2.4.5

6 years ago

2.4.4

6 years ago

2.4.3

6 years ago

2.4.2

6 years ago

2.4.1

6 years ago

2.4.0

6 years ago

2.3.1

6 years ago

2.3.0

6 years ago

2.2.2

6 years ago

2.2.1

6 years ago

2.2.0

6 years ago

2.1.3

6 years ago

2.1.2

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.8

6 years ago

2.0.7

6 years ago

2.0.6

7 years ago

2.0.5

7 years ago

2.0.4

7 years ago

2.0.3

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.5.0

7 years ago

1.4.1

7 years ago

1.4.0

7 years ago

1.3.6

7 years ago

1.3.5

7 years ago

1.3.4

7 years ago

1.3.3

7 years ago

1.3.2

7 years ago

1.3.1

7 years ago

1.3.0

7 years ago

1.2.3

7 years ago

1.2.2

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.0.11

7 years ago

1.0.10

7 years ago

1.0.9

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago