The update contains
- A lot of bug fixes
- Added authentication support
- Reworked how download chapter images work
- Added `CTRL + C` handler
- Added [documentation](https://mangadex-downloader.readthedocs.io/en/latest/index.html)
- Added `--replace` option
For more detail about updates, see below.
For CLI
- Fixed `--start-chapter` and `--end-chapter` malfunctioning 5 , thanks to kegilbert !
- Added `--replace` option, replace manga if exist.
- Added KeyboardInterrupt (Ctrl+C) handler, so there are no messy outputs when `CTRL + C` is pressed. See example below.
Before
shell
$ mangadex-dl "a96676e5-8ae2-425e-b549-7f15dd34a6d8"
[INFO] Fetching manga a96676e5-8ae2-425e-b549-7f15dd34a6d8
[INFO] Downloading cover manga Komi-san wa Komyushou Desu.
file_sizes: 55%|██████████████▏ | 1.51M/2.76M [00:00<00:00, 5.84MB/s]^CTraceback (most recent call last):
File ".../.local/bin/mangadex-dl", line 8, in <module>
sys.exit(main())
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/__main__.py", line 59, in main
_main(sys.argv[1:])
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/__main__.py", line 45, in _main
download(
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/main.py", line 84, in download
download_file(manga.cover_art, str(cover_path))
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/utils.py", line 27, in download
downloader.download()
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/downloader.py", line 117, in download
writer.write(chunk)
KeyboardInterrupt
After
shell
$ mangadex-dl "a96676e5-8ae2-425e-b549-7f15dd34a6d8"
[INFO] Fetching manga a96676e5-8ae2-425e-b549-7f15dd34a6d8
[INFO] Downloading cover manga Komi-san wa Komyushou Desu.
file_sizes: 50%|████████████▉ | 1.38M/2.76M [00:00<00:00, 3.11MB/s]
[INFO] Cleaning up...
Action interrupted by user
- Added type checking for MangaDex url, so no more messy outputs. See example below
Before
shell
$ mangadex-dl "invalid manga"
[ERROR] invalid manga is not valid mangadex url
Traceback (most recent call last):
File ".../.local/bin/mangadex-dl", line 8, in <module>
sys.exit(main())
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/__main__.py", line 59, in main
_main(sys.argv[1:])
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/__main__.py", line 45, in _main
download(
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/main.py", line 37, in download
raise e from None
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/main.py", line 34, in download
manga_id = validate_url(url)
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/utils.py", line 15, in validate_url
raise InvalidURL('Invalid MangaDex URL or manga id')
mangadex_downloader.errors.InvalidURL: Invalid MangaDex URL or manga id
After
shell
$ mangadex-dl "invalid manga"
usage: mangadex-dl [-h] [--folder FOLDER] [--replace] [--proxy SOCKS / HTTP Proxy] [--proxy-env] [--verbose]
[--start-chapter CHAPTER] [--end-chapter CHAPTER] [--use-compressed-image] [--no-oneshot-chapter]
[--login] [--login-username USERNAME] [--login-password PASSWORD]
URL
__main__.py: error: argument URL: Invalid MangaDex URL or manga id
For embedding
- Fixed report time for MangaDex network are high numbers
- Fixed massive reports to MangaDex network if response status_code was 206
- HTTP server errors are now handled by the session
- Now `download()` will raise `InvalidManga` if given manga are not exist, see example below.
Before
shell
$ mangadex-dl "2bdf5af0-54ab-41e2-978b-58e74bdb9d15"
[INFO] Fetching manga 2bdf5af0-54ab-41e2-978b-58e74bdb9d15
Traceback (most recent call last):
File ".../.local/lib/python3.8/site-packages/mangadex_downloader/fetcher.py", line 11, in get_manga
raise HTTPException('Server sending %s code' % r.status_code) from None
mangadex_downloader.errors.HTTPException: Server sending 404 code
After
shell
$ mangadex-dl "2bdf5af0-54ab-41e2-978b-58e74bdb9d15"
[INFO] Fetching manga 2bdf5af0-54ab-41e2-978b-58e74bdb9d15
Traceback (most recent call last):
File "...\mangadex-downloader\mangadex_downloader\fetcher.py", line 9, in get_manga
raise InvalidManga('Manga \"%s\" cannot be found' % manga_id)
mangadex_downloader.errors.InvalidManga: Manga "2bdf5af0-54ab-41e2-978b-58e74bdb9d15" cannot be found
- Added `login()` for logging in to MangaDex API, for more info: https://mangadex-downloader.readthedocs.io/en/latest/api.html#mangadex_downloader.login.
- Added `logout()` for logging out from MangaDex API, for more info: https://mangadex-downloader.readthedocs.io/en/latest/api.html#mangadex_downloader.logout