2022-08-15 13:47:16 +02:00
# manga-dlp - python script to download mangas
CI/CD
[![status-badge ](https://img.shields.io/drone/build/olofvndrhr/manga-dlp?label=tests&server=https%3A%2F%2Fci.44net.ch )](https://ci.44net.ch/olofvndrhr/manga-dlp)
[![Last Release ](https://img.shields.io/github/release-date/olofvndrhr/manga-DLP?label=last%20release )](https://github.com/olofvndrhr/manga-dlp/releases)
[![Version ](https://img.shields.io/github/v/release/olofvndrhr/manga-dlp?label=git%20release )](https://github.com/olofvndrhr/manga-dlp/releases)
[![Version PyPi ](https://img.shields.io/pypi/v/manga-dlp?label=pypi%20release )](https://pypi.org/project/manga-dlp/)
Code Analysis
[![Quality Gate Status ](https://sonarqube.44net.ch/api/project_badges/measure?project=olofvndrhr%3Amanga-dlp&metric=alert_status&token=f9558470580eea5b4899cf33f190eee16011346d )](https://sonarqube.44net.ch/dashboard?id=olofvndrhr%3Amanga-dlp)
[![Coverage ](https://sonarqube.44net.ch/api/project_badges/measure?project=olofvndrhr%3Amanga-dlp&metric=coverage&token=f9558470580eea5b4899cf33f190eee16011346d )](https://sonarqube.44net.ch/dashboard?id=olofvndrhr%3Amanga-dlp)
[![Bugs ](https://sonarqube.44net.ch/api/project_badges/measure?project=olofvndrhr%3Amanga-dlp&metric=bugs&token=f9558470580eea5b4899cf33f190eee16011346d )](https://sonarqube.44net.ch/dashboard?id=olofvndrhr%3Amanga-dlp)
[![Security ](https://img.shields.io/snyk/vulnerabilities/github/olofvndrhr/manga-dlp )](https://app.snyk.io/org/olofvndrhr-t6h/project/aae9609d-a4e4-41f8-b1ac-f2561b2ad4e3)
Meta
[![Code style ](https://img.shields.io/badge/code%20style-black-black )](https://github.com/psf/black)
2023-02-18 12:52:34 +01:00
[![Linter ](https://img.shields.io/badge/linter-ruff-red )](https://github.com/charliermarsh/ruff)
2023-02-18 16:36:52 +01:00
[![Types ](https://img.shields.io/badge/types-pyright-blue )](https://github.com/microsoft/pyright)
2022-08-15 13:47:16 +02:00
[![Tests ](https://img.shields.io/badge/tests-pytest%20%7C%20tox-yellow )](https://github.com/pytest-dev/pytest/)
[![Coverage ](https://img.shields.io/badge/coverage-coveragepy-green )](https://github.com/nedbat/coveragepy)
[![License ](https://img.shields.io/badge/license-MIT-9400d3.svg )](https://snyk.io/learn/what-is-mit-license/)
[![Compatibility ](https://img.shields.io/pypi/pyversions/manga-dlp )](https://pypi.org/project/manga-dlp/)
2023-02-18 12:52:34 +01:00
2022-08-15 13:47:16 +02:00
---
## Description
A manga download script written in python. It only supports [mangadex.org ](https://mangadex.org/ ) for now. But support
2023-02-21 17:16:39 +01:00
for other sites is _planned™_ .
2022-08-15 13:47:16 +02:00
Before downloading a new chapter, the script always checks if there is already a chapter with the same name in the
download directory. If found the chapter is skipped. So you can run the script on a schedule to only download new
chapters without any additional setup.
The default behaiviour is to pack the images to a [cbz archive ](https://en.wikipedia.org/wiki/Comic_book_archive ). If
2023-02-21 17:16:39 +01:00
you just want the folder with all the pictures use the flag `--format ""` .
2022-08-15 13:47:16 +02:00
## _Currently_ Supported sites
2023-02-18 12:52:34 +01:00
- [Mangadex.org ](https://mangadex.org/ )
2022-08-15 13:47:16 +02:00
2023-02-18 16:36:52 +01:00
## Features (not complete)
2023-02-22 21:41:23 +01:00
- Metadata support with [ComicInfo.xml ](https://anansi-project.github.io/docs/comicinfo/intro )
2023-02-18 16:36:52 +01:00
- Json caching
- Custom hooks after/before each download
- Custom chapter name format
- Volume support
- Multiple archive formats supported (cbz,cbr,zip,none)
- Language selection
- Download all chapters directly
- And others...
2022-08-15 13:47:16 +02:00
## Usage
### Quick start
```sh
python3 manga-dlp.py \
--url https://mangadex.org/title/a96676e5-8ae2-425e-b549-7f15dd34a6d8/komi-san-wa-komyushou-desu \
--language "en" \
--chapters "all"
```
### With GitHub
```sh
git clone https://github.com/olofvndrhr/manga-dlp.git # clone the repository
cd manga-dlp # go in the directory
pip install -r requirements.txt # install required packages
# on windows
python manga-dlp.py < options >
# on unix
python3 manga-dlp.py < options >
```
### With pip ([pypi](https://pypi.org/project/manga-dlp/))
```sh
python3 -m pip install manga-dlp # download the package from pypi
python3 -m mangadlp < args > # start the script as a module
OR
manga-dlp < args > # call script directly
OR
mangadlp < args > # call script directly
```
### With docker
2023-02-21 17:16:39 +01:00
See the docker [README ](https://manga-dlp.ivn.sh/docker/ )
2022-08-15 13:47:16 +02:00
## Options
```txt
2022-12-29 18:13:19 +01:00
Usage: manga-dlp.py [OPTIONS]
2022-08-15 13:47:16 +02:00
Script to download mangas from various sites
2022-12-29 18:13:19 +01:00
Options:
--help Show this message and exit.
--version Show the version and exit.
source: [mutually_exclusive, required]
2023-02-06 15:34:40 +01:00
-u, --url, --uuid TEXT URL or UUID of the manga
--read FILE Path of file with manga links to download. One per line
2022-12-29 18:13:19 +01:00
verbosity: [mutually_exclusive]
2023-02-06 15:34:40 +01:00
--loglevel INTEGER Custom log level
--warn Only log warnings and higher
--debug Debug logging. Log EVERYTHING
2022-12-29 18:13:19 +01:00
-c, --chapters TEXT Chapters to download
-p, --path PATH Download path [default: downloads]
-l, --language TEXT Manga language [default: en]
--list List all available chapters
2023-02-15 16:02:24 +01:00
--format [cbz|cbr|zip|pdf|] Archive format to create. An empty string means don't archive the folder [default: cbz]
2023-02-06 15:34:40 +01:00
--name-format TEXT Naming format to use when saving chapters. See docs for more infos [default: {default}]
--name-format-none TEXT String to use when the variable of the custom name format is empty
2022-12-29 18:13:19 +01:00
--forcevol Force naming of volumes. For mangas where chapters reset each volume
--wait FLOAT Time to wait for each picture to download in seconds(float) [default: 0.5]
--hook-manga-pre TEXT Commands to execute before the manga download starts
--hook-manga-post TEXT Commands to execute after the manga download finished
--hook-chapter-pre TEXT Commands to execute before the chapter download starts
--hook-chapter-post TEXT Commands to execute after the chapter download finished
2023-02-06 15:34:40 +01:00
--cache-path PATH Where to store the cache-db. If no path is given, cache is disabled
2023-02-15 14:21:45 +01:00
--add-metadata / --no-metadata Enable/disable creation of metadata via ComicInfo.xml [default: add-metadata]
2022-08-15 13:47:16 +02:00
```
## Contribution / Bugs
For suggestions for improvement, just open a pull request.
2023-02-22 21:41:23 +01:00
If you want to add support for a new site, there is an api [template file ](https://github.com/olofvndrhr/manga-dlp/tree/master/contrib/api_template.py ) which you can use.
And more infos and tools are in the contrib [README.md ](https://github.com/olofvndrhr/manga-dlp/tree/master/contrib/README.md )
2022-08-15 13:47:16 +02:00
2023-02-21 17:16:39 +01:00
Otherwise, you can open an issue with the name of the site which you want support for (not guaranteed to be
implemented).
2022-08-15 13:47:16 +02:00
If you encounter any bugs, also just open an issue with a description of the problem.
## TODO's
2023-02-18 12:52:34 +01:00
- < del > Make docker container for easy distribution</ del >
2023-02-21 17:16:39 +01:00
--> [Dockerhub ](https://hub.docker.com/r/olofvndrhr/manga-dlp )
2023-02-18 12:52:34 +01:00
- < del > Automate release</ del >
--> Done with woodpecker-ci
- < del > Make pypi package</ del >
--> Done with release [2.1.7 ](https://pypi.org/project/manga-dlp/ )
- Add more supported sites