Skip to content
/ tranga Public

Monitor and download Manga automatically in a Docker-Container.

License

Notifications You must be signed in to change notification settings

C9Glax/tranga

Repository files navigation

Tranga v2

Automatic Manga and Metadata downloader

GitHub License

GitHub branch check runs Last Run
GitHub branch check runs Last Run
GitHub branch check runs Last Run
GitHub branch check runs Last Run

About The Project

Tranga can download Chapters and Metadata from "Scanlation" sites such as

and trigger a library-scan with Komga and Kavita.
Notifications can be sent to your devices using Gotify, LunaSea or Ntfy, or any other service that can use REST Webhooks.

What this program does and does not do

DOES: Download Images from a Website.
DOES: Create Archives with those images.

how?

Tranga (this repository) is a REST-API and worker in one. Tranga provides REST-Endpoints to configure workers (Jobs). Requests include searches for Manga, creating and starting Jobs such as downloading available chapters. For available endpoints check http(s)://<hostedInstance>/swagger or API/openapi/API_v2.json

This repository does not include a frontend. A frontend can take many forms, such as a website:

tranga-website (Original, if you use the docker-compose.yaml in this repo it will spin up an instance for this)

tranga-yacobGUI (Third Party)

When downloading a chapter (meaning the images that make-up the manga) from a Website, Tranga will additionally try and fetch Metadata from the same website or enhance it from third-party sources. Downloaded images can be jpeg-compressed and/or made black and white to save on diskspace (measured at least a 50% reduction in size, without a significant loss of quality).

Tranga will then package the contents of each chapter in a .cbz-archive and place it in a common folder per Manga. If specified, Tranga will then notify library-Managers such as Komga and Kavita to trigger a scan for new chapters. Tranga can also send notifications to your devices via third-party services such as Gotify, Ntfy, or any other REST Webhook.

(back to top)

Screenshots

This repository has no frontend, however checkout tranga-website for a default!

Inspiration:

Because Kaizoku was relying on mangal and mangal hasn't received bugfixes for its issues with Titles not showing up, or throwing errors because of illegal characters, there were no alternatives for automatic downloads. However, Kaizoku certainly had a great Web-UI.

That is why I wanted to create my own project, in a language I understand, and that I am able to maintain myself.

(back to top)

Endpoint Documentation

Checkout openapi/API_v2.json

The container also spins up a Swagger site at http://<url>/swagger.

Built With

💙 Blåhaj 🦈

(back to top)

Star History

Star History Chart

Getting Started

(back to top)

Docker

Built for AMD64. Also available for ARM64 and ARMv7 if it feels like it (dependencies aren't always your friend).

An example docker-compose.yaml is provided. Mount /Manga to wherever you want your chapters (.cbz-Archives) downloaded (where Komga/Kavita can access them for example).
The file also includes tranga-website as frontend. For its configuration refer to the Tranga-Website Repository README.

Environment Variable default Description
PORT 6531 Port for the API Endpoints (Don't change this unless you know what you are doing)
POSTGRES_HOST tranga-pg:5432 host-address of postgres database (Don't change!)
POSTGRES_DB postgres name of database
POSTGRES_USER postgres username used for database authentication
POSTGRES_PASSWORD postgres password used for database authentication
DOWNLOAD_LOCATION /Manga Target-Directory for Downloads (Path inside the container! Don't change!)
FLARESOLVERR_URL URL of Flaresolverr-Instance
POSTGRES_COMMAND_TIMEOUT 60 Timeout of Postgres-commands
POSTGRES_CONNECTION_TIMEOUT 30 Timeout for postgres-databaes connection
CHECK_CHAPTERS_BEFORE_START true Whether to update database downloaded chapters column on startup (takes a while)
MATCH_EXACT_CHAPTER_NAME true Match the stored filename exactly with the filename on disk when checking if a chapter is downloaded
CREATE_COMICINFO_XML true Whether to include ComicInfo.xml in .cbz-Archives
ALWAYS_INCLUDE_VOLUME_IN_FILENAME false Override to always include a volume in filenames (default as Vol. 0)
HTTP_REQUEST_TIMEOUT 10 Request timeout for Mangaconnectors
REQUESTS_PER_MINUTE 90 Maximum requests per minute for Mangaconnectors (Don't change)
MINUTES_BETWEEN_NOTIFICATIONS 1 Interval at which Tranga checks if notifications need to be sent.
HOURS_BETWEEN_NEW_CHAPTERS_CHECK 3 Interval at which Tranga checks if there are new chapters for a manga
WORKER_TIMEOUT 600 Seconds a worker can take before being forcefully cancelled

Bare-Metal

While not intended, if your machine can run .NET (and is AMD64, ARM64, ARMv7), it can run Tranga without docker.

Configuration-Files are stored at

  • Linux /usr/share/tranga-api
  • Windows %appdata%/tranga-api

Downloads (default) are stored in (see DOWNLOAD_LOCATION)

  • Linux /Manga
  • Windows %currentDirectory%/Downloads

Prerequisits

.NET 10

Contributing

If you want to contribute, please feel free to fork and create a Pull-Request!

Please read CONTRIBUTING

License

Distributed under the GNU GPLv3 License. See LICENSE for more information.

(back to top)

Acknowledgments

(back to top)