Sadly MyAnimeList discontinued their API, you might want to use an alternative API
MyAnimeList Client
A gem for the MyAnimeList.net API.
For now you can:
Installation
Add this line to your application's Gemfile:
gem 'myanimelist_client'
And then execute:
$ bundle
Or install it yourself as:
$ gem install myanimelist_client
Overview
require 'myanimelist_client'
# First, create a client
# MyAnimeList.net requires a valid account to consume their API
client = MyanimelistClient.new 'username', 'password'
# Then you may want to check if your username / password are ok
if client.verify_credentials.ok?
# Now you can use the API
# Let's search a good anime!
results = client.search_anime 'K-On'
# Everything is nicely wrapped in small objects
results.sort_by(&:score).reverse!.each do |anime|
puts "#{anime.title} (#{anime.english}) - #{anime.score}"
end
end
Nice, isn't it?
Usage
The Client
The client memorizes your username and password (myanimelist.net requires a valid account in order to consume their API) then it allows you to use the API:
client = MyanimelistClient.new('username', 'password')
Verify Credentials
Check your username / password with #verify_credentials
:
user = client.verify_credentials # => MyanimelistClient::UserResponse
user.ok? # true when everything went right
user.error? # true when an error occured
user.raw # the raw response from the API or the error message
Search Anime
Search anime with #search_anime
:
results = client.search_anime('anime name')
# => MyanimelistClient::SearchResponse
# It includes Ruby's Enumerable module:
results.each do |anime|
anime.id # => String or nil
anime.title # => String or nil
anime.english # => String or nil
anime.synonyms # => String or nil
anime.episodes # => Fixnum or nil
anime.score # => Float or nil
anime.type # => String or nil
anime.status # => String or nil
anime.start_date # => String or nil
anime.end_date # => String or nil
anime.synopsis # => String or nil
anime.image # => String or nil
anime.manga? # => false
anime.anime? # => true
anime.upcoming? # => true when the anime is not yet aired
anime.ongoing? # => true when the anime is currently airing
anime.finished? # => true when the anime is finished
anime.ok? # when no error occured
anime.error? # when an error occured
anime.raw # => String containing the raw response from the API or the error message
anime.to_h # => Hash
end
results.length # => Fixnum
results.empty? # => true or false
results.to_a # => Array
results[0] # => MyanimelistClient::SearchEntry or nil
Search Manga
Search manga with #search_manga
:
results = client.search_manga('anime name')
# => MyanimelistClient::SearchResponse
# It includes Ruby's Enumerable module:
results.each do |manga|
manga.id # => String or nil
manga.title # => String or nil
manga.english # => String or nil
manga.synonyms # => String or nil
manga.chapters # => Fixnum or nil
manga.volumes # => Fixnum or nil
manga.score # => Float or nil
manga.type # => String or nil
manga.status # => String or nil
manga.start_date # => String or nil
manga.end_date # => String or nil
manga.synopsis # => String or nil
manga.image # => String or nil
manga.manga? # => true
manga.anime? # => false
manga.upcoming? # => true when the manga is not yet published
manga.ongoing? # => true when the manga is currently publishing
manga.finished? # => true when the manga is finished
manga.ok? # when no error occured
manga.error? # when an error occured
manga.raw # => String containing the raw response from the API or the error message
manga.to_h # => Hash
end
results.length # => Fixnum
results.empty? # => true or false
results.to_a # => Array
results[0] # => MyanimelistClient::SearchEntry or nil
API Documentation
The API documentation at rubydoc.info
Contributing
To make a pull request:
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Write specs and test your code (
rake spec
) - Try not to offend RuboCop (
rake rubocop
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Thanks
Thanks to harveyico for his myanimelist gem, it helped me (I was using it before and its code kinda influenced me).
Of course, thanks to the myanimelist.net team for their work.
License MIT
The MIT License (MIT)
Copyright (c) 2016 Oli4242
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.