Skip to main content

getjmanga

PyPI CI

ghcr size

Retrieve and save images from japanese web comic sites.

Note: Redistribution of downloaded image data is prohibited. Please keep it to private use.

Supported sites

See docs/SUPPORTED_SITES.md.

Installation

# mise via github release
mise use -g github:eggplants/getjmanga

# mise via pipx
mise use -g pipx:getjmanga

# pipx
pipx install getjmanga

# pip
pip install getjmanga

Docker

docker pull ghcr.io/eggplants/getjmanga

docker run --rm -v "$PWD:/work" -w /work \
  ghcr.io/eggplants/getjmanga https://takecomic.jp/episodes/74f33031e13cd

CLI

# one episode
jm https://takecomic.jp/episodes/74f33031e13cd https://piccoma.com/web/viewer/8195/1185884

# episodes in bulk: this one and every next one
jm -b https://shonenjumpplus.com/episode/13932016480028799982

# every previous one too: the whole work from one episode
jm -B https://shonenjumpplus.com/episode/13932016480028799982

# login
jm -u you@example.com https://piccoma.com/web/viewer/8195/1185884

# every link on a page that some extractor takes
jm -s https://shonenjumpplus.com/

# remember the work, then download what is new in every remembered work
jm -S -b https://shonenjumpplus.com/episode/13932016480028799982
jm patrol

Configuration

Use jm config / jm c.

jm c init

# asks for the username and password
jm c site shonenjumpplus.com
jm c site piccoma

jm c savedir ~/manga
jm c overwrite true
jm c bulk false
jm c both true      # -B by default; turns bulk off, and the other way round

Patrol

jm -S remembers what it downloaded as a [[patrol]] entry in the config file, and jm patrol / jm p goes through them: an episode is followed to the newest one and the entry moves along to the first episode still locked (so a wait-to-read episode is tried again next time), a series page is listed again, a -s page is scanned again. Episodes already there are skipped, so only what is new gets downloaded. jm patrol takes the download options (-d, -o, -q, ...) but no url.

patrol = [
  { url = "https://shonenjumpplus.com/episode/13932016480028799982", title = "SPY×FAMILY" },
  { url = "https://shonenjumpplus.com/", search = true },
  ...
]

Library

from getjmanga import Downloader, find_extractor

url = "https://takecomic.jp/episodes/74f33031e13cd"
extractor = find_extractor(url)()      # -> Comici
result = Downloader(extractor, "out").download(url)
print(result.status, result.save_dir, result.episode.next_url)

An extractor on its own reads without writing anything:

from getjmanga import Comici

comici = Comici()
for url in comici.series_urls("https://takecomic.jp/series/b167ea507d35f"):
    episode = comici.episode(url)
    print(episode.episode_title, len(episode.pages), episode.readable)

Writing an extractor

See docs/ADD_SITE.md.

License

MIT License

Release files for getjmanga 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for getjmanga 0.0.3
File Size Uploaded
getjmanga-0.0.3.tar.gz 287.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for getjmanga 0.0.3
File Interpreter ABI Platform
getjmanga-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 680.5 kB

Release files / getjmanga-0.0.3.tar.gz

Download URL getjmanga-0.0.3.tar.gz
Size 287.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7296895b08c45f0de23231cda6b2b06b109968e6dce70e3b7a4e0411c8d56b67
BLAKE2b-256 checksum
How to use checksums
8ce400ff4a524b0e8c97fd1cc056b3add8e0132ea1ce58f314bd5c1f4bc021ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / getjmanga-0.0.3-py3-none-any.whl

Download URL getjmanga-0.0.3-py3-none-any.whl
Size 393.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8006688538372f778841e941e8355b10d05459d9a1ec059d9dcb984ca38bd7bf
BLAKE2b-256 checksum
How to use checksums
dff820ee576dcebd9e3f4a278074cf91c82d9c74d9354534daa5d8f56d5a2f14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.1.0

2 release files

0.0.4

2 release files

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page