getjmanga 0.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. getjmanga-0.0.0/.gitignore +14 -0
  2. getjmanga-0.0.0/LICENSE.txt +21 -0
  3. getjmanga-0.0.0/PKG-INFO +159 -0
  4. getjmanga-0.0.0/README.md +127 -0
  5. getjmanga-0.0.0/getjmanga/__init__.py +194 -0
  6. getjmanga-0.0.0/getjmanga/__main__.py +8 -0
  7. getjmanga-0.0.0/getjmanga/cli.py +275 -0
  8. getjmanga-0.0.0/getjmanga/config.py +136 -0
  9. getjmanga-0.0.0/getjmanga/downloader.py +128 -0
  10. getjmanga-0.0.0/getjmanga/extractors/__init__.py +292 -0
  11. getjmanga-0.0.0/getjmanga/extractors/alphapolis.py +554 -0
  12. getjmanga-0.0.0/getjmanga/extractors/beltoon.py +448 -0
  13. getjmanga-0.0.0/getjmanga/extractors/bloom.py +372 -0
  14. getjmanga-0.0.0/getjmanga/extractors/boost.py +963 -0
  15. getjmanga-0.0.0/getjmanga/extractors/carula.py +258 -0
  16. getjmanga-0.0.0/getjmanga/extractors/ciao.py +369 -0
  17. getjmanga-0.0.0/getjmanga/extractors/comicessay.py +208 -0
  18. getjmanga-0.0.0/getjmanga/extractors/comici.py +588 -0
  19. getjmanga-0.0.0/getjmanga/extractors/comico.py +400 -0
  20. getjmanga-0.0.0/getjmanga/extractors/comicwalker.py +304 -0
  21. getjmanga-0.0.0/getjmanga/extractors/common.py +265 -0
  22. getjmanga-0.0.0/getjmanga/extractors/corocoro.py +364 -0
  23. getjmanga-0.0.0/getjmanga/extractors/corona.py +391 -0
  24. getjmanga-0.0.0/getjmanga/extractors/crea.py +326 -0
  25. getjmanga-0.0.0/getjmanga/extractors/cycomi.py +349 -0
  26. getjmanga-0.0.0/getjmanga/extractors/daysneo.py +248 -0
  27. getjmanga-0.0.0/getjmanga/extractors/drecomi.py +382 -0
  28. getjmanga-0.0.0/getjmanga/extractors/firecross.py +395 -0
  29. getjmanga-0.0.0/getjmanga/extractors/fleur.py +223 -0
  30. getjmanga-0.0.0/getjmanga/extractors/fullpercent.py +360 -0
  31. getjmanga-0.0.0/getjmanga/extractors/fuz.py +319 -0
  32. getjmanga-0.0.0/getjmanga/extractors/gakcomic.py +621 -0
  33. getjmanga-0.0.0/getjmanga/extractors/ganma.py +523 -0
  34. getjmanga-0.0.0/getjmanga/extractors/gaugau.py +661 -0
  35. getjmanga-0.0.0/getjmanga/extractors/gecchan.py +209 -0
  36. getjmanga-0.0.0/getjmanga/extractors/gigaviewer.py +280 -0
  37. getjmanga-0.0.0/getjmanga/extractors/ginkgo.py +430 -0
  38. getjmanga-0.0.0/getjmanga/extractors/goraku.py +282 -0
  39. getjmanga-0.0.0/getjmanga/extractors/hifumi.py +376 -0
  40. getjmanga-0.0.0/getjmanga/extractors/kirapo.py +273 -0
  41. getjmanga-0.0.0/getjmanga/extractors/laza.py +591 -0
  42. getjmanga-0.0.0/getjmanga/extractors/leedcafe.py +445 -0
  43. getjmanga-0.0.0/getjmanga/extractors/lezhin.py +342 -0
  44. getjmanga-0.0.0/getjmanga/extractors/linemanga.py +385 -0
  45. getjmanga-0.0.0/getjmanga/extractors/linku.py +1166 -0
  46. getjmanga-0.0.0/getjmanga/extractors/magapoke.py +293 -0
  47. getjmanga-0.0.0/getjmanga/extractors/manga5.py +615 -0
  48. getjmanga-0.0.0/getjmanga/extractors/mangabox.py +327 -0
  49. getjmanga-0.0.0/getjmanga/extractors/mangano.py +505 -0
  50. getjmanga-0.0.0/getjmanga/extractors/mavo.py +355 -0
  51. getjmanga-0.0.0/getjmanga/extractors/mechacreators.py +247 -0
  52. getjmanga-0.0.0/getjmanga/extractors/meets.py +297 -0
  53. getjmanga-0.0.0/getjmanga/extractors/michikusa.py +337 -0
  54. getjmanga-0.0.0/getjmanga/extractors/neetsha.py +379 -0
  55. getjmanga-0.0.0/getjmanga/extractors/nettai.py +340 -0
  56. getjmanga-0.0.0/getjmanga/extractors/nicomanga.py +321 -0
  57. getjmanga-0.0.0/getjmanga/extractors/nora.py +364 -0
  58. getjmanga-0.0.0/getjmanga/extractors/ohta.py +436 -0
  59. getjmanga-0.0.0/getjmanga/extractors/omocoro.py +348 -0
  60. getjmanga-0.0.0/getjmanga/extractors/pachikuri.py +350 -0
  61. getjmanga-0.0.0/getjmanga/extractors/piccoma.py +615 -0
  62. getjmanga-0.0.0/getjmanga/extractors/pie.py +482 -0
  63. getjmanga-0.0.0/getjmanga/extractors/pixivcomic.py +406 -0
  64. getjmanga-0.0.0/getjmanga/extractors/porta.py +404 -0
  65. getjmanga-0.0.0/getjmanga/extractors/rookie.py +218 -0
  66. getjmanga-0.0.0/getjmanga/extractors/saizensen.py +536 -0
  67. getjmanga-0.0.0/getjmanga/extractors/shiori.py +209 -0
  68. getjmanga-0.0.0/getjmanga/extractors/shuro.py +267 -0
  69. getjmanga-0.0.0/getjmanga/extractors/souffle.py +257 -0
  70. getjmanga-0.0.0/getjmanga/extractors/splush.py +263 -0
  71. getjmanga-0.0.0/getjmanga/extractors/starts.py +347 -0
  72. getjmanga-0.0.0/getjmanga/extractors/sukupara.py +232 -0
  73. getjmanga-0.0.0/getjmanga/extractors/torch.py +324 -0
  74. getjmanga-0.0.0/getjmanga/extractors/vcomi.py +489 -0
  75. getjmanga-0.0.0/getjmanga/extractors/wings.py +640 -0
  76. getjmanga-0.0.0/getjmanga/extractors/yanmaga.py +460 -0
  77. getjmanga-0.0.0/getjmanga/extractors/yawaspi.py +310 -0
  78. getjmanga-0.0.0/getjmanga/extractors/ynjn.py +300 -0
  79. getjmanga-0.0.0/getjmanga/extractors/yomonga.py +392 -0
  80. getjmanga-0.0.0/getjmanga/extractors/zerosum.py +394 -0
  81. getjmanga-0.0.0/getjmanga/protobuf.py +147 -0
  82. getjmanga-0.0.0/getjmanga/py.typed +0 -0
  83. getjmanga-0.0.0/getjmanga/session.py +27 -0
  84. getjmanga-0.0.0/pyproject.toml +128 -0
@@ -0,0 +1,14 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .venv
4
+ dist/
5
+ build/
6
+ *.egg-info/
7
+ .ruff_cache/
8
+ .pytest_cache/
9
+ .coverage
10
+ site/
11
+ pytest.xml
12
+ pytest-coverage.txt
13
+ TODO.md
14
+ *.swp
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 eggplants
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,159 @@
1
+ Metadata-Version: 2.5
2
+ Name: getjmanga
3
+ Version: 0.0.0
4
+ Summary: Retrieve and save images from japanese web comic sites
5
+ Project-URL: Documentation, https://eggplants.github.io/getjmanga/
6
+ Project-URL: Issues, https://github.com/eggplants/getjmanga/issues
7
+ Project-URL: Repository, https://github.com/eggplants/getjmanga
8
+ Author-email: eggplants <w10776e8w@yahoo.co.jp>
9
+ License: MIT
10
+ License-File: LICENSE.txt
11
+ Keywords: cli,comici,downloader,gigaviewer,japanese,manga,manga-downloader,piccoma,scraping
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Programming Language :: Python :: 3.15
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.11
25
+ Requires-Dist: beautifulsoup4>=4.12
26
+ Requires-Dist: cryptography>=43
27
+ Requires-Dist: pathvalidate>=3.2
28
+ Requires-Dist: pillow>=10.4
29
+ Requires-Dist: requests>=2.32
30
+ Requires-Dist: rich>=13.7
31
+ Description-Content-Type: text/markdown
32
+
33
+ # getjmanga
34
+
35
+ [![PyPI](
36
+ <https://img.shields.io/pypi/v/getjmanga?color=blue>
37
+ )](
38
+ <https://pypi.org/project/getjmanga/>
39
+ ) [![CI](
40
+ <https://github.com/eggplants/getjmanga/actions/workflows/ci.yml/badge.svg>
41
+ )](
42
+ <https://github.com/eggplants/getjmanga/actions/workflows/ci.yml>
43
+ )
44
+
45
+ [![ghcr size](
46
+ <https://ghcr-badge.egpl.dev/eggplants/getjmanga/size>
47
+ )](
48
+ <https://github.com/eggplants/getjmanga/pkgs/container/getjmanga>
49
+ )
50
+
51
+ Retrieve and save images from japanese web comic sites.
52
+
53
+ _Note: Redistribution of downloaded image data is prohibited. Please keep it to private use._
54
+
55
+ ## Supported sites
56
+
57
+ See [docs/SUPPORTED_SITES.md](docs/SUPPORTED_SITES.md).
58
+
59
+ ## Installation
60
+
61
+ ```bash
62
+ # mise via github release
63
+ mise use -g github:eggplants/getjmanga
64
+
65
+ # mise via pipx
66
+ mise use -g pipx:getjmanga
67
+
68
+ # pipx
69
+ pipx install getjmanga
70
+
71
+ # pip
72
+ pip install getjmanga
73
+ ```
74
+
75
+ ### Docker
76
+
77
+ ```bash
78
+ docker pull ghcr.io/eggplants/getjmanga
79
+
80
+ docker run --rm -v "$PWD:/work" -w /work \
81
+ ghcr.io/eggplants/getjmanga https://takecomic.jp/episodes/74f33031e13cd
82
+ ```
83
+
84
+ ## CLI
85
+
86
+ ```shellsession
87
+ # one episode
88
+ jm https://takecomic.jp/episodes/74f33031e13cd https://piccoma.com/web/viewer/8195/1185884
89
+
90
+ # episodes in bulk
91
+ jm -b https://shonenjumpplus.com/episode/13932016480028799982
92
+
93
+ # login
94
+ jm -u you@example.com https://piccoma.com/web/viewer/8195/1185884
95
+ ```
96
+
97
+ | Option | Description |
98
+ | --- | --- |
99
+ | `-b`, `--bulk` | follow every next episode |
100
+ | `-d DIR`, `--savedir DIR` | directory to save into (default: `.`) |
101
+ | `-f`, `--first` | download only the first page |
102
+ | `-o`, `--overwrite` | download again if it exists |
103
+ | `-m`, `--metadata` | save episode metadata as `metadata.json` |
104
+ | `-u ID`, `--username ID` | id or email address to log in with |
105
+ | `-p PW`, `--password PW` | password (prompted for if `-u` is given without it) |
106
+ | `-e NAME`, `--extractor NAME` | use this extractor instead of picking one by the url's host |
107
+ | `-c FILE`, `--config FILE` | config file holding site credentials (default: `~/.config/getjmanga/config.toml`) |
108
+ | `-q`, `--quiet` | disable console output |
109
+ | `--list-extractors` | list every extractor, its URL shapes and its hosts |
110
+
111
+ ### Configuration
112
+
113
+ ```toml
114
+ # site.<host>
115
+ [site."shonenjumpplus.com"]
116
+ username = "you@example.com"
117
+ password = "..."
118
+
119
+ # site.<extractor>
120
+ [site.comici-plus]
121
+ username = "comici-id"
122
+ password = "..."
123
+
124
+ [site.piccoma]
125
+ username = "you@example.com"
126
+ # no password: it is prompted for once per run
127
+ ```
128
+
129
+ ## Library
130
+
131
+ ```python
132
+ from getjmanga import Downloader, find_extractor
133
+
134
+ url = "https://takecomic.jp/episodes/74f33031e13cd"
135
+ extractor = find_extractor(url)() # -> Comici
136
+ result = Downloader(extractor, "out").download(url)
137
+ print(result.status, result.save_dir, result.episode.next_url)
138
+ ```
139
+
140
+ An extractor on its own reads without writing anything:
141
+
142
+ ```python
143
+ from getjmanga import Comici
144
+
145
+ comici = Comici()
146
+ for url in comici.series_urls("https://takecomic.jp/series/b167ea507d35f"):
147
+ episode = comici.episode(url)
148
+ print(episode.episode_title, len(episode.pages), episode.readable)
149
+ ```
150
+
151
+ ### Writing an extractor
152
+
153
+ See [docs/ADD_SITE.md](docs/ADD_SITE.md).
154
+
155
+ ## License
156
+
157
+ [MIT License](
158
+ <https://github.com/eggplants/getjmanga/blob/master/LICENSE.txt>
159
+ )
@@ -0,0 +1,127 @@
1
+ # getjmanga
2
+
3
+ [![PyPI](
4
+ <https://img.shields.io/pypi/v/getjmanga?color=blue>
5
+ )](
6
+ <https://pypi.org/project/getjmanga/>
7
+ ) [![CI](
8
+ <https://github.com/eggplants/getjmanga/actions/workflows/ci.yml/badge.svg>
9
+ )](
10
+ <https://github.com/eggplants/getjmanga/actions/workflows/ci.yml>
11
+ )
12
+
13
+ [![ghcr size](
14
+ <https://ghcr-badge.egpl.dev/eggplants/getjmanga/size>
15
+ )](
16
+ <https://github.com/eggplants/getjmanga/pkgs/container/getjmanga>
17
+ )
18
+
19
+ Retrieve and save images from japanese web comic sites.
20
+
21
+ _Note: Redistribution of downloaded image data is prohibited. Please keep it to private use._
22
+
23
+ ## Supported sites
24
+
25
+ See [docs/SUPPORTED_SITES.md](docs/SUPPORTED_SITES.md).
26
+
27
+ ## Installation
28
+
29
+ ```bash
30
+ # mise via github release
31
+ mise use -g github:eggplants/getjmanga
32
+
33
+ # mise via pipx
34
+ mise use -g pipx:getjmanga
35
+
36
+ # pipx
37
+ pipx install getjmanga
38
+
39
+ # pip
40
+ pip install getjmanga
41
+ ```
42
+
43
+ ### Docker
44
+
45
+ ```bash
46
+ docker pull ghcr.io/eggplants/getjmanga
47
+
48
+ docker run --rm -v "$PWD:/work" -w /work \
49
+ ghcr.io/eggplants/getjmanga https://takecomic.jp/episodes/74f33031e13cd
50
+ ```
51
+
52
+ ## CLI
53
+
54
+ ```shellsession
55
+ # one episode
56
+ jm https://takecomic.jp/episodes/74f33031e13cd https://piccoma.com/web/viewer/8195/1185884
57
+
58
+ # episodes in bulk
59
+ jm -b https://shonenjumpplus.com/episode/13932016480028799982
60
+
61
+ # login
62
+ jm -u you@example.com https://piccoma.com/web/viewer/8195/1185884
63
+ ```
64
+
65
+ | Option | Description |
66
+ | --- | --- |
67
+ | `-b`, `--bulk` | follow every next episode |
68
+ | `-d DIR`, `--savedir DIR` | directory to save into (default: `.`) |
69
+ | `-f`, `--first` | download only the first page |
70
+ | `-o`, `--overwrite` | download again if it exists |
71
+ | `-m`, `--metadata` | save episode metadata as `metadata.json` |
72
+ | `-u ID`, `--username ID` | id or email address to log in with |
73
+ | `-p PW`, `--password PW` | password (prompted for if `-u` is given without it) |
74
+ | `-e NAME`, `--extractor NAME` | use this extractor instead of picking one by the url's host |
75
+ | `-c FILE`, `--config FILE` | config file holding site credentials (default: `~/.config/getjmanga/config.toml`) |
76
+ | `-q`, `--quiet` | disable console output |
77
+ | `--list-extractors` | list every extractor, its URL shapes and its hosts |
78
+
79
+ ### Configuration
80
+
81
+ ```toml
82
+ # site.<host>
83
+ [site."shonenjumpplus.com"]
84
+ username = "you@example.com"
85
+ password = "..."
86
+
87
+ # site.<extractor>
88
+ [site.comici-plus]
89
+ username = "comici-id"
90
+ password = "..."
91
+
92
+ [site.piccoma]
93
+ username = "you@example.com"
94
+ # no password: it is prompted for once per run
95
+ ```
96
+
97
+ ## Library
98
+
99
+ ```python
100
+ from getjmanga import Downloader, find_extractor
101
+
102
+ url = "https://takecomic.jp/episodes/74f33031e13cd"
103
+ extractor = find_extractor(url)() # -> Comici
104
+ result = Downloader(extractor, "out").download(url)
105
+ print(result.status, result.save_dir, result.episode.next_url)
106
+ ```
107
+
108
+ An extractor on its own reads without writing anything:
109
+
110
+ ```python
111
+ from getjmanga import Comici
112
+
113
+ comici = Comici()
114
+ for url in comici.series_urls("https://takecomic.jp/series/b167ea507d35f"):
115
+ episode = comici.episode(url)
116
+ print(episode.episode_title, len(episode.pages), episode.readable)
117
+ ```
118
+
119
+ ### Writing an extractor
120
+
121
+ See [docs/ADD_SITE.md](docs/ADD_SITE.md).
122
+
123
+ ## License
124
+
125
+ [MIT License](
126
+ <https://github.com/eggplants/getjmanga/blob/master/LICENSE.txt>
127
+ )
@@ -0,0 +1,194 @@
1
+ """.. include:: ../README.md"""
2
+
3
+ from __future__ import annotations
4
+
5
+ import importlib.metadata
6
+
7
+ from .config import Config, ConfigError, Credentials, default_config_path, load_config
8
+ from .downloader import Downloader, Result, Status
9
+ from .extractors import (
10
+ EXTRACTORS,
11
+ AlphaPolis,
12
+ BeLToon,
13
+ Bloom,
14
+ Boost,
15
+ Carula,
16
+ Ciao,
17
+ ComicEssay,
18
+ Comici,
19
+ Comico,
20
+ ComicWalker,
21
+ Corocoro,
22
+ Corona,
23
+ Crea,
24
+ Cycomi,
25
+ DaysNeo,
26
+ Drecomi,
27
+ Episode,
28
+ Extractor,
29
+ FireCross,
30
+ Fleur,
31
+ FlowerComics,
32
+ FullPercent,
33
+ Fuz,
34
+ Gakcomic,
35
+ GanganOnline,
36
+ Ganma,
37
+ Gaugau,
38
+ Gecchan,
39
+ GetjmangaError,
40
+ GigaViewer,
41
+ Ginkgo,
42
+ Goraku,
43
+ Hifumi,
44
+ Kirapo,
45
+ Laza,
46
+ LeedCafe,
47
+ Lezhin,
48
+ LineManga,
49
+ LoginError,
50
+ MagaPoke,
51
+ Manga5,
52
+ Mangabox,
53
+ MangaLab,
54
+ MangaNo,
55
+ MangaOne,
56
+ MangaPark,
57
+ Mavo,
58
+ MechaCreators,
59
+ Meets,
60
+ Michikusa,
61
+ Neetsha,
62
+ Nettai,
63
+ NicoManga,
64
+ Nora,
65
+ NotAnEpisodePageError,
66
+ Ohta,
67
+ Omocoro,
68
+ Pachikuri,
69
+ Page,
70
+ Piccoma,
71
+ Pie,
72
+ PixivComic,
73
+ Porta,
74
+ Rookie,
75
+ Saizensen,
76
+ Shiori,
77
+ Shuro,
78
+ Souffle,
79
+ Splush,
80
+ Starts,
81
+ Sukupara,
82
+ Torch,
83
+ UnknownExtractorError,
84
+ UnsupportedUrlError,
85
+ Vcomi,
86
+ Wings,
87
+ YanJan,
88
+ YanMaga,
89
+ Yawaspi,
90
+ Yomonga,
91
+ ZeroSum,
92
+ find_extractor,
93
+ get_extractor,
94
+ )
95
+
96
+ try:
97
+ __version__ = importlib.metadata.version(__name__)
98
+ except importlib.metadata.PackageNotFoundError: # pragma: no cover
99
+ __version__ = "0.0.0"
100
+
101
+ __all__ = (
102
+ "EXTRACTORS",
103
+ "AlphaPolis",
104
+ "BeLToon",
105
+ "Bloom",
106
+ "Boost",
107
+ "Carula",
108
+ "Ciao",
109
+ "ComicEssay",
110
+ "ComicWalker",
111
+ "Comici",
112
+ "Comico",
113
+ "Config",
114
+ "ConfigError",
115
+ "Corocoro",
116
+ "Corona",
117
+ "Crea",
118
+ "Credentials",
119
+ "Cycomi",
120
+ "DaysNeo",
121
+ "Downloader",
122
+ "Drecomi",
123
+ "Episode",
124
+ "Extractor",
125
+ "FireCross",
126
+ "Fleur",
127
+ "FlowerComics",
128
+ "FullPercent",
129
+ "Fuz",
130
+ "Gakcomic",
131
+ "GanganOnline",
132
+ "Ganma",
133
+ "Gaugau",
134
+ "Gecchan",
135
+ "GetjmangaError",
136
+ "GigaViewer",
137
+ "Ginkgo",
138
+ "Goraku",
139
+ "Hifumi",
140
+ "Kirapo",
141
+ "Laza",
142
+ "LeedCafe",
143
+ "Lezhin",
144
+ "LineManga",
145
+ "LoginError",
146
+ "MagaPoke",
147
+ "Manga5",
148
+ "MangaLab",
149
+ "MangaNo",
150
+ "MangaOne",
151
+ "MangaPark",
152
+ "Mangabox",
153
+ "Mavo",
154
+ "MechaCreators",
155
+ "Meets",
156
+ "Michikusa",
157
+ "Neetsha",
158
+ "Nettai",
159
+ "NicoManga",
160
+ "Nora",
161
+ "NotAnEpisodePageError",
162
+ "Ohta",
163
+ "Omocoro",
164
+ "Pachikuri",
165
+ "Page",
166
+ "Piccoma",
167
+ "Pie",
168
+ "PixivComic",
169
+ "Porta",
170
+ "Result",
171
+ "Rookie",
172
+ "Saizensen",
173
+ "Shiori",
174
+ "Shuro",
175
+ "Souffle",
176
+ "Splush",
177
+ "Starts",
178
+ "Status",
179
+ "Sukupara",
180
+ "Torch",
181
+ "UnknownExtractorError",
182
+ "UnsupportedUrlError",
183
+ "Vcomi",
184
+ "Wings",
185
+ "YanJan",
186
+ "YanMaga",
187
+ "Yawaspi",
188
+ "Yomonga",
189
+ "ZeroSum",
190
+ "default_config_path",
191
+ "find_extractor",
192
+ "get_extractor",
193
+ "load_config",
194
+ )
@@ -0,0 +1,8 @@
1
+ """Support `python -m getjmanga`."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from .cli import main
6
+
7
+ if __name__ == "__main__":
8
+ main()