Skip to content
/ hibiki Public

MyAnimeList manga database dump and REST API.

License

Notifications You must be signed in to change notification settings

rl404/hibiki

Repository files navigation

Hibiki

Go Report Card License: MIT GitHub tag (latest SemVer) Docker Image Size (latest semver) publish & deploy

Hibiki is MyAnimeList manga database dump and REST API.

Powered by my nagato library and MyAnimeList API as reference.

Features

  • Save manga details
    • Manga data
    • Manga genres
    • Manga pictures
    • Manga relation (with other manga)
    • Manga authors
    • Manga serialization (magazines)
  • Save manga stats history
  • Save user manga list
  • Handle empty manga id
  • Auto update manga & user data (cron)
  • Interchangeable cache
    • no cache
    • inmemory
    • Redis
  • Interchangeable pubsub
  • Swagger
  • Docker
  • Newrelic monitoring
    • HTTP
    • Cron
    • Database
    • Cache
    • Pubsub
    • External API

More will be coming soon...

Requirement

Installation

  1. Clone the repository.
git clone github.com/rl404/hibiki
  1. Rename .env.sample to .env and modify the values according to your setup.
  2. Run. You need at least 2 consoles/terminals.
# Run the API.
make

# Run the consumer.
make consumer
  1. localhost:45002 is ready (port may varies depend on your .env).

Other commands

# Update old manga data.
make cron-update

# Fill missing manga data.
make cron-fill
  1. Clone the repository.
git clone github.com/rl404/hibiki
  1. Rename .env.sample to .env and modify the values according to your setup.
  2. Get docker image.
# Pull existing image.
docker pull rl404/hibiki

# Or build your own.
make docker-build
  1. Run the container. You need at least 2 consoles/terminals.
# Run the API.
make docker-api

# Run the consumer.
make docker-consumer
  1. localhost:45002 is ready (port may varies depend on your .env).

Other commands

# Update old manga data.
make docker-cron-update

# Fill missing manga data.
make docker-cron-fill

# Stop running containers.
make docker-stop

Environment Variables

Env Default Description
HIBIKI_APP_ENV dev Environment type (dev/prod).
HIBIKI_HTTP_PORT 45002 HTTP server port.
HIBIKI_HTTP_READ_TIMEOUT 5s HTTP read timeout.
HIBIKI_HTTP_WRITE_TIMEOUT 5s HTTP write timeout.
HIBIKI_HTTP_GRACEFUL_TIMEOUT 10s HTTP gracefull timeout.
HIBIKI_GRPC_PORT 46002 GRPC server port.
HIBIKI_GRPC_TIMEOUT 10s GRPC timeout.
HIBIKI_CACHE_DIALECT inmemory Cache type (nocache/redis/inmemory)
HIBIKI_CACHE_ADDRESS Cache address.
HIBIKI_CACHE_PASSWORD Cache password.
HIBIKI_CACHE_TIME 24h Cache time.
HIBIKI_DB_DIALECT mongodb Database type.
HIBIKI_DB_ADDRESS mongodb://localhost:27017 Database address with port.
HIBIKI_DB_NAME hibiki Database name.
HIBIKI_DB_USER Database username.
HIBIKI_DB_PASSWORD Database password.
HIBIKI_DB_MAX_CONN_OPEN 10 Max open database connection.
HIBIKI_DB_MAX_CONN_IDLE 10 Max idle database connection.
HIBIKI_DB_MAX_CONN_LIFETIME 1m Max database connection lifetime.
HIBIKI_PUBSUB_DIALECT rabbitmq Pubsub type (rabbitmq/redis/google)
HIBIKI_PUBSUB_ADDRESS Pubsub address (if you are using google, this will be your google project id).
HIBIKI_PUBSUB_PASSWORD Pubsub password (if you are using google, this will be the content of your google service account json).
HIBIKI_MAL_CLIENT_ID MyAnimeList client id.
HIBIKI_CRON_UPDATE_LIMIT 10 Manga count limit when updating old data.
HIBIKI_CRON_FILL_LIMIT 30 Manga count limit when filling missing manga data.
HIBIKI_CRON_RELEASING_AGE 7 Age of old releasing/airing manga data (in days).
HIBIKI_CRON_FINISHED_AGE 30 Age of old finished manga data (in days).
HIBIKI_CRON_NOT_YET_AGE 7 Age of old not yet released/aired manga (in days).
HIBIKI_CRON_USER_ANIME_AGE 7 Age of old user manga list (in days).
HIBIKI_NEWRELIC_NAME hibiki Newrelic application name.
HIBIKI_NEWRELIC_LICENSE_KEY Newrelic license key.

Trivia

Hibiki's name is taken from japanese destroyer with her sisters (Inazuma, Akatsuki, Ikazuchi). Also, exists in Kantai Collection games and manga.

Disclaimer

Hibiki is meant for educational purpose and personal usage only. Please use it responsibly according to MyAnimeList API License and Developer Agreement.

All data belong to their respective copyrights owners, hibiki does not have any affiliation with content providers.

License

MIT License

Copyright (c) 2022 Axel