Mangadex downloader written in python
Find a file
2022-06-20 16:29:54 +02:00
.github/ISSUE_TEMPLATE Update issue templates 2022-06-20 16:29:54 +02:00
.woodpecker push version 2022-06-17 23:57:52 +02:00
contrib create api template + typo 2022-05-17 13:32:50 +02:00
docker push version 2022-06-17 23:57:52 +02:00
mangadlp push version 2022-06-17 23:57:52 +02:00
tests fix test 2022-06-18 00:01:55 +02:00
.coveragerc update tests and add coverage report 2022-05-10 16:38:14 +02:00
.gitignore change logging of skipped chapters and fix error list 2022-05-20 23:57:27 +02:00
CHANGELOG.md add issue in changelog [CI SKIP] 2022-06-18 00:12:23 +02:00
conftest.py update tests and add coverage report 2022-05-10 16:38:14 +02:00
LICENSE update versions and readme + minor tweaks 2022-05-09 21:07:37 +02:00
manga-dlp.py push version 2022-06-17 23:57:52 +02:00
mangas.txt add docker container 2021-12-24 16:30:50 +01:00
MANIFEST.in update versions and readme + minor tweaks 2022-05-09 21:07:37 +02:00
README.md fix image suffix and add readme entry of --format 2022-06-17 23:39:01 +02:00
release-files.txt fix gitea relase 2022-05-10 18:27:19 +02:00
release.sh preperation for 2.1.0 2022-05-16 16:17:55 +02:00
renovate.json Update 'renovate.json' 2022-04-16 19:48:03 +02:00
requirements.txt fixes for arm64 2022-05-16 17:07:34 +02:00
setup.py push version 2022-06-17 23:57:52 +02:00
sonar-project.properties fix sonar link 2022-05-17 17:31:13 +02:00

manga-dlp

python script to download mangas

status-badge Quality Gate Status Coverage Bugs Code style: black

Description

A manga download script written in python. It only supports mangadex.org for now. But support for other sites is planned.

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. If you just want the folder with all the pictures use the flag --nocbz.

Currently Supported sites

Usage

Quick start

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

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)

(not yet done)

With docker

See the docker README

Options

usage: manga-dlp.py [-h] (-u URL_UUID | --read READ | -v) [-c CHAPTERS] [-p PATH] [-l LANG] [--list] [--format FORMAT] [--forcevol] [--wait WAIT] [--verbose]

Script to download mangas from various sites

options:
-h, --help                          show this help message and exit
-u URL_UUID, --url URL_UUID         URL or UUID of the manga
--read READ                         Path of file with manga links to download. One per line
-v, --version                       Show version of manga-dlp and exit
-c CHAPTERS, --chapters CHAPTERS    Chapters to download
-p PATH, --path PATH                Download path. Defaults to "<script_dir>/downloads"
-l LANG, --language LANG            Manga language. Defaults to "en" --> english
--list                              List all available chapters. Defaults to false
--format FORMAT                     Archive format to create. An empty string means dont archive the folder. Defaults to 'cbz'
--forcevol                          Force naming of volumes. For mangas where chapters reset each volume
--wait WAIT                         Time to wait for each picture to download in seconds(float). Defaults 0.5
--verbose                           Verbose logging. Defaults to false

Downloads file-structure

.
└── <download path>/
    └── <manga title>/
        └── <chapter title>/

Example:

./downloads/mangatitle/chaptertitle(.cbz)

Select chapters to download

With the option -c "all" you download every chapter available in the selected language

To download specific chapters you can use the option -c or --chapters. That you don't have to specify all chapters individually, the script has some logic to fill in the blanks.

Examples:

# if you want to download chapters 1 to 5
python3 manga-dlp -u <url> -c 1-5

# if you want to download chapters 1 and 5
python3 manga-dlp -u <url> -c 1,5

If you use --forcevol it's the same, just with the volume number

# if you want to download chapters 1:1 to 1:5
python3 manga-dlp -u <url> -c 1:1-1:5

# if you want to download chapters 1:1 and 1:5
python3 manga-dlp -u <url> -c 1:1,1:5

# to download the whole volume 1
python3 manga-dlp -u <url> -c 1:

And a combination of all

# if you want to download chapters 1 to 5 and 9
python3 manga-dlp -u <url> -c 1-5,9

# with --forcevol
# if you want to download chapters 1:1 to 1:5 and 9, also the whole volume 4
python3 manga-dlp -u <url> -c 1:1-1:5,1:9,4:

With the option --read you can specify a file with links to multiple mangas. They will be parsed from top to bottom one at a time. Every link will be matched for the right api to use. It is important that you only have one link per line, otherwise they can't be parsed.

Example:

# mangas.txt
link1
link2
link3

python3 manga-dlp.py --read mangas.txt --list

This will list all available chapters for link1, link2 and link3.

Set download path

With the option -p/--path you can specify a path to download the chapters to. The default path is <script_dir>/downloads. Absolute and relative paths are supported.

Example:

python3 manga-dlp.py <other options> --path /media/mangas

This will save all mangas/chapters in the path /media/mangas/<manga title>/<chapter name>

Set output format

--format currently only works with "", "pdf", "zip", "rar" and "cbz". As it just renames the zip file with the new suffix (except pdf).

You can specify the output format of the manga images with the --format option. The default is set to .cbz, so if no format is given it falls back to <manga-name>/<chapter_name>.cbz

For pdf creation you have to install img2pdf. With the amd64 docker image it is already installed see more in the Docker README.md.

Supported format options are:

  • cbz - --format "cbz" or --format ".cbz" - default
  • cbr - --format "cbr" or --format ".cbr"
  • zip - --format "zip" or --format ".zip"
  • pdf - --format "pdf" or --format ".pdf"
  • none - --format "" - this saves the images just in a folder

Example:

python3 manga-dlp.py <other options> --format "zip"

This will download the chapter and save it as a zip archive.

Contribution / Bugs

For suggestions for improvement, just open a pull request.

If you want to add support for a new site, there is an api template file which you can use.

Otherwise you can open a issue with the name of the site which you want support for. (not guaranteed to be implemented)

If you encounter any bugs, also just open a issue with a description of the problem.

TODO's

  • Make docker container for easy distribution --> Dockerhub
  • Automate release --> Done with woodpecker-ci
  • Make pypi package
  • Add more supported sites