Tranga can download Chapters and Metadata from "Scanlation" sites such as
- MangaDex.org (Multilingual)
- MangaWorld (it)
- AsuraComic (en) thanks @yacob841
- WeebCentral (en) thanks @TheyCallMeTravis
- ❓ Open an issue
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.
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.
This repository has no frontend, however checkout tranga-website for a default!
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.
Checkout openapi/API_v2.json
The container also spins up a Swagger site at http://<url>/swagger.
💙 Blåhaj 🦈
- ASP.NET
- PostgreSQL
- Swagger
- Newtonsoft.Json
- Sixlabors.ImageSharp
- Html Agility Pack (HAP)
- Puppeteersharp
- Soenneker.Utils.String.NeedlemanWunsch
- Jikan
- BuildInformation
- GitInfo
- Log4Net
- xUnit
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 |
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
If you want to contribute, please feel free to fork and create a Pull-Request!
Please read CONTRIBUTING
Distributed under the GNU GPLv3 License. See LICENSE for more information.