All Projects → jikan-me → Jikan Rest

jikan-me / Jikan Rest

Licence: mit
The REST API for Jikan

Projects that are alternatives of or similar to Jikan Rest

Jikan
Unofficial MyAnimeList PHP+REST API which provides functions other than the official API
Stars: ✭ 531 (+165.5%)
Mutual labels:  api, rest, parsing, anime, manga, myanimelist
Lumen Microservice
Lumen on Docker - Skeleton project with Nginx, MySQL & PHP 7 | Aws ECS, Google Kubernates, Azure Container Engine
Stars: ✭ 183 (-8.5%)
Mutual labels:  api, rest-api, rest, laravel, lumen
Forrest
A Laravel library for Salesforce
Stars: ✭ 171 (-14.5%)
Mutual labels:  rest-api, rest, laravel, lumen
Railgun
An extension of the MyAnimeList API.
Stars: ✭ 8 (-96%)
Mutual labels:  api, anime, manga, myanimelist
Node Express Mongoose Passport Jwt Rest Api Auth
Node, express, mongoose, passport and JWT REST API authentication example
Stars: ✭ 146 (-27%)
Mutual labels:  api, rest-api, rest
Grafanajsondatasource
Grafana datasource to load JSON data over your arbitrary HTTP backend
Stars: ✭ 146 (-27%)
Mutual labels:  api, rest-api, rest
Apicheck
The DevSecOps toolset for REST APIs
Stars: ✭ 184 (-8%)
Mutual labels:  api, rest-api, rest
Restful Api With Laravel Definitive Guide
Repository with the base code for the course "RESTful API with Laravel - Definitive-Guide"
Stars: ✭ 156 (-22%)
Mutual labels:  api, rest-api, laravel
Poloniex Api Node
Poloniex API client for REST and WebSocket API
Stars: ✭ 138 (-31%)
Mutual labels:  api, rest-api, rest
Laravel Api Handler
Package providing helper functions for a Laravel REST-API
Stars: ✭ 150 (-25%)
Mutual labels:  api, rest-api, laravel
Jda
Java wrapper for the popular chat & VOIP service: Discord https://discord.com
Stars: ✭ 2,598 (+1199%)
Mutual labels:  api, rest-api, rest
Kitsu Server
🚂 Rails API server for Kitsu
Stars: ✭ 145 (-27.5%)
Mutual labels:  api, anime, manga
Malgraph4
MALgraph: statistics service for MyAnimeList.net users.
Stars: ✭ 143 (-28.5%)
Mutual labels:  anime, manga, myanimelist
Api Guidelines
adidas group API design guidelines
Stars: ✭ 147 (-26.5%)
Mutual labels:  api, rest-api, rest
Ssm
👅基于RESTful风格的前后端分离的SSM框架,集成了shiro和swagger等框架
Stars: ✭ 141 (-29.5%)
Mutual labels:  rest-api, rest, redis
Appkernel
API development made easy: a smart Python 3 API framework
Stars: ✭ 152 (-24%)
Mutual labels:  api, rest-api, rest
Laravel Api Debugger
Easy debug for your JSON API.
Stars: ✭ 175 (-12.5%)
Mutual labels:  api, rest, laravel
Proteus
Lean, mean, and incredibly fast JVM framework for web and microservice development.
Stars: ✭ 178 (-11%)
Mutual labels:  api, rest-api, rest
Open Rest
Standard rest server, Base on restify and sequelize
Stars: ✭ 136 (-32%)
Mutual labels:  api, rest-api, rest
Laravel Fractal
An easy to use Fractal wrapper built for Laravel and Lumen applications
Stars: ✭ 1,748 (+774%)
Mutual labels:  api, laravel, lumen

Jikan

Jikan - Unofficial MyAnimeList.net REST API

Average time to resolve an issue Percentage of issues still open stable Discord Server

Jikan is a REST API for MyAnimeList.net. It scrapes the website to satisfy the need for an API - which MyAnimeList lacks.

The raison d'être of Jikan is to assist developers easily get the data they need for their apps and projects without having to depend on the lackluster official API, unstable APIs, or sidetracking their projects to develop parsers.

The word Jikan literally translates to Time in Japanese (時間). And that's what this API saves you of. ;)

Notice: Jikan does not support authenticated requests. You can not update your lists.

Index

Getting Started

Requirements

🐳 Docker

If you don't want to install it yourself, there are dockerized options available:

01. Installation Prerequisites

01A. Linux

This is specifically for Ubuntu, but other distributions should work similarly.

  1. Install requirements:
  • Add PHP related packages: sudo add-apt-repository -y ppa:ondrej/php
    • If add-apt-repository is not installed, you can install it by doing sudo apt install python-software-properties or sudo apt install software-properties-common
  • sudo apt update && sudo apt upgrade
  • Install requirements: sudo apt install curl git php redis unzip
  • Verify that PHP 7.1-7.3 is installed: php -v (PHP 7.4 is not currently supported)
  • Install the corresponding php-xml and php-mbstring packages for your version, e.g:
    • PHP 7.1: sudo apt install php7.1-xml php7.1-mbstring
    • PHP 7.3: sudo apt install php7.3-xml php7.3-mbstring
  • Install composer: curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
  1. Start the redis server: sudo service redis start

01B. Mac

  1. Install brew
  2. Install requirements: brew install php composer redis
  3. Start the redis server: brew services start redis

02. Installation

  1. git clone https://github.com/jikan-me/jikan-rest.git
  2. cd jikan-rest
  3. cp .env.dist .env
  4. composer install (Make sure Jikan's directory has write permissions)

03. Configuration

You're able to configure Jikan through the .env file. A few kernel commands are available from the project directory by running the artisan file.

The first thing you need to do is generate an APP_KEY.

  1. php artisan key:generate
  2. Configure how Jikan caches
  3. Configure how Jikan handles expired cache

04. Ignition

php artisan serve --port=8080 or php -S localhost:8000 -t public

Jikan is now hosted on http://localhost:8000/v3/

Alternatively, host it on Apache (or Nginx)

Create a virtual host and point it to /public. Jikan supports Apache out of the box, you just need to create a virtual host and point it to /public, and enable the rewrite module for .htaccess (sudo a2enmod rewrite), and configure /etc/apache/apache2.conf by setting AllowOverride None to AllowOverride All for the /var/www directory.

ℹ️ If you wish to configure it for Nginx or anything else, you'll have to port the rewrite rules located at public/.htaccess

05. Configuring how Jikan Caches (optional)

Jikan caches on file by default in /storage/framework/cache. So even if you don't change the caching method, Jikan will work out of the box.

However, you can configure Jikan to cache on Redis instead: php artisan cache:driver redis

Note: If you're currently running Jikan, you're required to stop it before running the above command.

06. Configuring how Jikan handles expired cache (optional)

Jikan handles cache in the legacy manner out of the box. This method was used previously to update cache.

06A. Cache Method: Legacy

When a cache expires, it gets deleted. So if you make a request that has an expired cache, your request will take longer as Jikan has to fetch and parse the new data from MyAnimeList again.

06B. Cache Method: Queue

This is a newly introduced caching method to the API, it's what the public API runs on as well. It requires some further setup.

When a cache expires, it does not get deleted. Instead, if you make a request that has an expired cache, a job will be dispatched to the queue which handles updating the cache in the background. Therefore, the request will keep on providing stale cache until the job is complete and the cache is replaced with fresh data.

This method provides zero delay, and is highly recommended if you have immense traffic coming your way.

ℹ️ Note: If you're currently running Jikan, you're required to stop it before running the above command. You're also required to clear any cache you've stored as well as anything on the Redis server.

  1. php artisan cache:method queue

Next, you need to make sure that there's a service looking after the queue. This can be manually done by running a process through php artisan queue:work --queue=high,low. You can set the command to run on cron, nohup, etc.

But a recommended way is to install Supervisor and have it handle the queue automatically.

ℹ️ Note: --queue=high,low; Jikan stores two types of queues; high priority and low priority. This depends on the type of request. You can check which request is considered to be high priority in the JikanResponseHandler.php middleware in the HIGH_PRIORITY_QUEUE array.

ℹ️ Note 2: Not all requests are queuable. Some are handled the legacy way. You can find out which ones in the JikanResponseHandler.php middleware in the NON_QUEUEABLE array.

This reason for this is quite simple. User related requests such as anime/manga list can be frequently updated. They're cached by default for 5 minutes (you can change this in .env). But if they were to get queued for a cache update, it would take longer than 5 minutes because the update job would have to wait in line. So it skips the queue and is automatically updated on the request. This does mean a slight delay in fetching and parsing the fresh data from MyAnimeList.

ℹ️ Note 3: Note 1 & Note 2 are default behavior. You can obviously change them as per your needs.

Configuring Supervisord
Linux
  1. Install supervisor
    • Linux: sudo apt install supervisor
    • Mac: brew install supervisor
  2. sudo cp conf/supervisor/jikan-worker.conf /etc/supervisor/conf.d
    • A default supervisor configureation file is available in this repo conf/supervisor/jikan-worker.conf
    • Be sure to update to the correct directory in jikan-worker.conf for command and stdout_logfile to the directory of jikan!

Example: If I install Jikan in /var/www/jikan-is-installed-here, you will have to adjust the following values in the jikan-worker.conf file.

...
command=php /var/www/jikan-is-installed-here/artisan queue:work --queue=high,low
...
stdout_logfile=/var/www/jikan-is-installed-here/storage/logs/worker.log
stderr_logfile=/var/www/jikan-is-installed-here/storage/logs/worker.error.log
  1. sudo supervisorctl reread
  2. sudo supervisorctl update
  3. sudo supervisorctl start jikan-worker:*
Mac
  1. Install Supervisor: brew install supervisor
  2. supervisord -c /usr/local/etc/supervisord.ini
  3. Copy conf/supervisor/jikan-worker.conf to /usr/local/etc/supervisor.d/
  4. brew services start supervisor
  5. sudo supervisorctl update
  6. sudo supervisorctl start jikan-worker:*

Troubleshooting

Please read the troubleshooting guide. For any additional help, join our Discord server.

Artisan Commands

Please read the commands guide. For any additional help, join our Discord server.

Information

If you don't want to host your instance, there's a public API available.

Wrappers

See the list of wrappers here

Running Tests

php vendor/bin/phpunit tests

Note: Tests may fail due to rate limit from MyAnimeList (HTTP 429)


Backers

Sugoi (すごい) Backers

Thank you to all our Sugoi (すごい) backers! 🙏 [Become a sugoi backer]

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Thank you to all our sponsors! [Become a sponsor]


DISCLAIMER

  • Jikan is not affiliated with MyAnimeList.net
  • You are responsible for the usage of this API. Please be respectful towards MyAnimeList's Terms Of Service
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].