kmoe-manga-downloader 1.1.2__py3-none-any.whl → 1.2.0__py3-none-any.whl
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.
- kmdr/core/__init__.py +5 -3
- kmdr/core/bases.py +49 -87
- kmdr/core/context.py +28 -0
- kmdr/core/defaults.py +64 -28
- kmdr/core/error.py +1 -1
- kmdr/core/session.py +16 -0
- kmdr/core/utils.py +33 -40
- kmdr/main.py +24 -15
- kmdr/module/authenticator/CookieAuthenticator.py +8 -4
- kmdr/module/authenticator/LoginAuthenticator.py +25 -21
- kmdr/module/authenticator/utils.py +47 -43
- kmdr/module/configurer/ConfigClearer.py +7 -2
- kmdr/module/configurer/ConfigUnsetter.py +2 -2
- kmdr/module/configurer/OptionLister.py +17 -3
- kmdr/module/configurer/OptionSetter.py +2 -2
- kmdr/module/configurer/option_validate.py +14 -12
- kmdr/module/downloader/DirectDownloader.py +7 -5
- kmdr/module/downloader/ReferViaDownloader.py +27 -24
- kmdr/module/downloader/utils.py +249 -91
- kmdr/module/lister/BookUrlLister.py +4 -3
- kmdr/module/lister/FollowedBookLister.py +59 -22
- kmdr/module/lister/utils.py +39 -28
- kmdr/module/picker/ArgsFilterPicker.py +1 -1
- kmdr/module/picker/DefaultVolPicker.py +34 -5
- {kmoe_manga_downloader-1.1.2.dist-info → kmoe_manga_downloader-1.2.0.dist-info}/METADATA +13 -11
- kmoe_manga_downloader-1.2.0.dist-info/RECORD +35 -0
- kmoe_manga_downloader-1.1.2.dist-info/RECORD +0 -33
- {kmoe_manga_downloader-1.1.2.dist-info → kmoe_manga_downloader-1.2.0.dist-info}/WHEEL +0 -0
- {kmoe_manga_downloader-1.1.2.dist-info → kmoe_manga_downloader-1.2.0.dist-info}/entry_points.txt +0 -0
- {kmoe_manga_downloader-1.1.2.dist-info → kmoe_manga_downloader-1.2.0.dist-info}/licenses/LICENSE +0 -0
- {kmoe_manga_downloader-1.1.2.dist-info → kmoe_manga_downloader-1.2.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kmoe-manga-downloader
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: A CLI-downloader for site @kox.moe.
|
|
5
5
|
Author-email: Chris Zheng <chrisis58@outlook.com>
|
|
6
6
|
License: MIT License
|
|
@@ -35,17 +35,19 @@ Classifier: Operating System :: OS Independent
|
|
|
35
35
|
Requires-Python: >=3.9
|
|
36
36
|
Description-Content-Type: text/markdown
|
|
37
37
|
License-File: LICENSE
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist:
|
|
41
|
-
Requires-Dist:
|
|
38
|
+
Requires-Dist: deprecation~=2.1.0
|
|
39
|
+
Requires-Dist: beautifulsoup4~=4.13.4
|
|
40
|
+
Requires-Dist: aiohttp~=3.12.15
|
|
41
|
+
Requires-Dist: aiofiles~=24.1.0
|
|
42
|
+
Requires-Dist: async-lru~=2.0.5
|
|
43
|
+
Requires-Dist: rich~=13.9.4
|
|
42
44
|
Dynamic: license-file
|
|
43
45
|
|
|
44
46
|
# Kmoe Manga Downloader
|
|
45
47
|
|
|
46
48
|
[](https://pepy.tech/projects/kmoe-manga-downloader) [](https://pypi.org/project/kmoe-manga-downloader/) [](https://github.com/chrisis58/kmdr/actions/workflows/unit-test.yml) [](https://www.python.org/) [](https://github.com/chrisis58/kmdr/blob/main/LICENSE)
|
|
47
49
|
|
|
48
|
-
`kmdr (Kmoe Manga Downloader)` 是一个 Python 应用,用于从 [Kmoe](https://kox.moe/)
|
|
50
|
+
`kmdr (Kmoe Manga Downloader)` 是一个 Python 应用,用于从 [Kmoe](https://kox.moe/) 网站下载漫画。它支持在终端环境下的登录、下载指定漫画及其卷,并支持回调脚本执行。
|
|
49
51
|
|
|
50
52
|
<p align="center">
|
|
51
53
|
<img src="assets/kmdr-demo.gif" alt="kmdr 使用演示" width="720">
|
|
@@ -53,11 +55,11 @@ Dynamic: license-file
|
|
|
53
55
|
|
|
54
56
|
## ✨功能特性
|
|
55
57
|
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
58
|
+
- **现代化终端界面**: 使用 [rich](https://github.com/Textualize/rich) 构建的终端用户界面(TUI),提供进度条和菜单等现代化、美观的交互式终端界面。
|
|
59
|
+
- **凭证和配置管理**: 应用自动维护登录凭证和下载设置,实现一次配置、持久有效,提升使用效率。
|
|
60
|
+
- **高效下载的性能**: 采用 `asyncio` 并发分片下载技术,充分利用网络带宽,极大加速单个大文件的下载速度。
|
|
61
|
+
- **强大的高可用性**: 内置强大的自动重试与断点续传机制,无惧网络中断,确保下载任务最终成功。
|
|
62
|
+
- **灵活的自动化接口**: 支持下载完成后自动执行自定义回调脚本,轻松集成到您的自动化流程。
|
|
61
63
|
|
|
62
64
|
## 🛠️安装应用
|
|
63
65
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
kmdr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
kmdr/main.py,sha256=EubhpLIrGHl9XjHXdmhROg3RBKyvHPuPaZPTaSYDsxQ,1355
|
|
3
|
+
kmdr/core/__init__.py,sha256=mTBPcw-mEKfHPV1bgwDx-JoO2G6dQ9QcOnQiEMmi7DE,342
|
|
4
|
+
kmdr/core/bases.py,sha256=JbwFlYdwQf4APCqanbJaCYtNzfiHOyvRkiIP5CKIvcc,3397
|
|
5
|
+
kmdr/core/context.py,sha256=fNxgQxmS9kX7ORURGjt_REtuTa1UGl796DeWaszf9pI,710
|
|
6
|
+
kmdr/core/defaults.py,sha256=dafYcqWcz8OveV-mRI92ScRgx7y6n3pdFUpnHYUqBKk,7649
|
|
7
|
+
kmdr/core/error.py,sha256=NBsa3eXiL8IPaKsYhZ1KXfVjdfmaM91UhtyH9tr7JCU,633
|
|
8
|
+
kmdr/core/registry.py,sha256=KYjvww5WRuUg5SeIeWZb96803-kgrTIKYvFTj_7bPfo,5560
|
|
9
|
+
kmdr/core/session.py,sha256=lFH4lnriwqvw-tlB3MEgRedX7h_LdtaR21Rfo-HAhRs,498
|
|
10
|
+
kmdr/core/structure.py,sha256=JHTuEHuRJLx1dEgg59WDJCZKORvwPJWuAb6nT1cSFNA,1163
|
|
11
|
+
kmdr/core/utils.py,sha256=mqlsHRm7LnymcBr-BKKf1Uq6tF6W4101wY45A-mzg3Q,2015
|
|
12
|
+
kmdr/module/__init__.py,sha256=aSuTcHhuBHUi1xNj5HTsXxhvegGBTRPNKj4JAPLC7LE,319
|
|
13
|
+
kmdr/module/authenticator/CookieAuthenticator.py,sha256=4upqvHSWZk_EyTACkEdDsBK0VO4pdUTYq5ilImAQPNE,1143
|
|
14
|
+
kmdr/module/authenticator/LoginAuthenticator.py,sha256=kEBGFCO-hXMmIVJ7-F-7Me_a2IqNGy9j9kaUlNWHU_M,2025
|
|
15
|
+
kmdr/module/authenticator/utils.py,sha256=MytwJ7jAUKJHPiQ7nCOVJN4fv1aQMyqLDTLQXvcs28k,2806
|
|
16
|
+
kmdr/module/configurer/ConfigClearer.py,sha256=2Ra-EV4fuDilWwoUS8NBSL1__-50D0YD0P6kHurH62c,480
|
|
17
|
+
kmdr/module/configurer/ConfigUnsetter.py,sha256=WVCETKg80vGCDEoaN5XWG7MYDJo-eGit-n53rBk46ZE,597
|
|
18
|
+
kmdr/module/configurer/OptionLister.py,sha256=iP8AmYLh885axpSdTexnWtgGx1r93Ko3IC-uKmCh8zE,1093
|
|
19
|
+
kmdr/module/configurer/OptionSetter.py,sha256=g3Nid0cG0VFhEguAcHwsOpfOluf-8lKpwZLemrUfP-A,893
|
|
20
|
+
kmdr/module/configurer/option_validate.py,sha256=Mn91UmpTI8zVV9Em8rL2mjNV21h0iYlzT8xoWDLEI68,3387
|
|
21
|
+
kmdr/module/downloader/DirectDownloader.py,sha256=BKxU3_Wky9HyFJ62SihUyvrPI2LM1jMDjrcbHRntAEg,1158
|
|
22
|
+
kmdr/module/downloader/ReferViaDownloader.py,sha256=7ElAe_vXOjQJZ3ICtcMWIwVUdvY5_iBn1CX9zomeRgA,1703
|
|
23
|
+
kmdr/module/downloader/utils.py,sha256=r6AdBRihLAsRkmH563czgwGe2NXyvyRWWIQcE0yen8c,11206
|
|
24
|
+
kmdr/module/lister/BookUrlLister.py,sha256=R1sak_GQG8HKfdSzHF-Dy1iby6TgFlxKJLf2dwBr0Bw,550
|
|
25
|
+
kmdr/module/lister/FollowedBookLister.py,sha256=9ZL6pC5nnxZos9ymbdKIuUNwjiCwcfakiZRNcbLrYzI,2874
|
|
26
|
+
kmdr/module/lister/utils.py,sha256=gVIRgEf41wBSji9TGWvxdp6XE4RLhQGy6xDKJsO8gE4,3182
|
|
27
|
+
kmdr/module/picker/ArgsFilterPicker.py,sha256=wBCDa6KsSSOLLQk8D4ftZ9ZnwPLiHIirxf6gGBq3I08,1782
|
|
28
|
+
kmdr/module/picker/DefaultVolPicker.py,sha256=XD5mo48bwpa6T69AIxWJVvrX1daPsxyG8AFsJ4RLTBc,1760
|
|
29
|
+
kmdr/module/picker/utils.py,sha256=lpxM7q9BJeupFQy8glBrHu1o4E38dk7iLexzKytAE6g,1222
|
|
30
|
+
kmoe_manga_downloader-1.2.0.dist-info/licenses/LICENSE,sha256=bKQlsXu8mAYKRZyoZKOEqMcCc8YjT5Q3Hgr21e0yU4E,1068
|
|
31
|
+
kmoe_manga_downloader-1.2.0.dist-info/METADATA,sha256=IJ-UGffCDmAt8ox28Mx1NOAo_MdC3hWxsdxxXrw5rQQ,8317
|
|
32
|
+
kmoe_manga_downloader-1.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
33
|
+
kmoe_manga_downloader-1.2.0.dist-info/entry_points.txt,sha256=DGMytQAhx4uNuKQL7BPkiWESHLXkH-2KSEqwHdygNPA,47
|
|
34
|
+
kmoe_manga_downloader-1.2.0.dist-info/top_level.txt,sha256=e0qxOgWp0tl3GLpmXGjZv3--q_TLoJ7GztM48Ov27wM,5
|
|
35
|
+
kmoe_manga_downloader-1.2.0.dist-info/RECORD,,
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
kmdr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
kmdr/main.py,sha256=F_zXjRr2QIBdNrqvCqpSNkFSxVY6ySfm-mk-Gg9qy7g,1018
|
|
3
|
-
kmdr/core/__init__.py,sha256=WT4MHsww1KOcIlf3z_AK5-4mXNFNBoCE1REQ0dvf9DE,281
|
|
4
|
-
kmdr/core/bases.py,sha256=uDLamjuRfwcVhbGI99aSUZBi-fN32OM2fl91t0bbVog,4484
|
|
5
|
-
kmdr/core/defaults.py,sha256=9vVN0xywLOHm3tcNf1GGJ9RTXB38YLTvBMqxmp0jEAE,6582
|
|
6
|
-
kmdr/core/error.py,sha256=ZXsiD-Ihe0zo5wdNgd7Rg-ISZifsiU5C6FeHesurfy4,597
|
|
7
|
-
kmdr/core/registry.py,sha256=KYjvww5WRuUg5SeIeWZb96803-kgrTIKYvFTj_7bPfo,5560
|
|
8
|
-
kmdr/core/structure.py,sha256=JHTuEHuRJLx1dEgg59WDJCZKORvwPJWuAb6nT1cSFNA,1163
|
|
9
|
-
kmdr/core/utils.py,sha256=eBoj8O37kIQSN6S72EPpv83YRQlplBZ1FzEvehOLEKU,1953
|
|
10
|
-
kmdr/module/__init__.py,sha256=aSuTcHhuBHUi1xNj5HTsXxhvegGBTRPNKj4JAPLC7LE,319
|
|
11
|
-
kmdr/module/authenticator/CookieAuthenticator.py,sha256=5LzqtpTCfKufcjbzFeJIAUbUaTxo2W4mN1ki8CDel2Y,1002
|
|
12
|
-
kmdr/module/authenticator/LoginAuthenticator.py,sha256=PnLGpgSZCA6GvtYFAKeCIRvjtojwIeF4it50QdTXuu8,1827
|
|
13
|
-
kmdr/module/authenticator/utils.py,sha256=fgheXC2--ZQ53zap6gF4lA88CzJRN4ljgKmOs3IbiJU,2415
|
|
14
|
-
kmdr/module/configurer/ConfigClearer.py,sha256=S5VxJ5latDK2-0Xf77_fVECXah7DhbI0exWE6AwUUkc,355
|
|
15
|
-
kmdr/module/configurer/ConfigUnsetter.py,sha256=ZjySNAQj4-j9k68_tbXa2Z9G0TqGgfKPRCtIf939Hfg,531
|
|
16
|
-
kmdr/module/configurer/OptionLister.py,sha256=qc-nWPft_EtbEgJnz32h3nwGyGbe9oabKZpm6dIJi_o,516
|
|
17
|
-
kmdr/module/configurer/OptionSetter.py,sha256=9MIkWZb-aFUTqpVCVrnri3JZTE0zO3CIYuN_nz5yzzY,842
|
|
18
|
-
kmdr/module/configurer/option_validate.py,sha256=DdtUG0E-LgjjHQgPBSyRZ_ID40QRRFSS_FEQHdK94hM,3327
|
|
19
|
-
kmdr/module/downloader/DirectDownloader.py,sha256=5ny3or9fj2rb3qGxEWBmiEs5vlIfvCSGFiMoFISs_J8,1060
|
|
20
|
-
kmdr/module/downloader/ReferViaDownloader.py,sha256=_x-hniGmIqc_7OFY-kQUrOIH0TwDcf-_NCsmVql2pp0,1694
|
|
21
|
-
kmdr/module/downloader/utils.py,sha256=qGp_c0coVENDKPNUpA7uZoHoDxBIj5jQHlw8qf4NRpQ,4814
|
|
22
|
-
kmdr/module/lister/BookUrlLister.py,sha256=Mq7EBXWSKd-6cygfkTjmOvgcUUaJI4NMQiaEIv9VDSk,470
|
|
23
|
-
kmdr/module/lister/FollowedBookLister.py,sha256=_fShmCAsZQqboeuRtLBjo6d9CkGpat8xNKC3COtKllc,1537
|
|
24
|
-
kmdr/module/lister/utils.py,sha256=0EHQIA05EZ1V0_SfkJ8demjzMRmFh9Q5qPvE6jvBqSU,2560
|
|
25
|
-
kmdr/module/picker/ArgsFilterPicker.py,sha256=f3suMPPeFEtB3u7aUY63k_sGIOP196R-VviQ9RfDBTA,1756
|
|
26
|
-
kmdr/module/picker/DefaultVolPicker.py,sha256=kpG5dvv1UKMhSA01VKGNB59zM5uszspyUVfRlL9aQA0,750
|
|
27
|
-
kmdr/module/picker/utils.py,sha256=lpxM7q9BJeupFQy8glBrHu1o4E38dk7iLexzKytAE6g,1222
|
|
28
|
-
kmoe_manga_downloader-1.1.2.dist-info/licenses/LICENSE,sha256=bKQlsXu8mAYKRZyoZKOEqMcCc8YjT5Q3Hgr21e0yU4E,1068
|
|
29
|
-
kmoe_manga_downloader-1.1.2.dist-info/METADATA,sha256=vPMrYaRtOC0rTenqPS2QWj5Inq1X1gYlMbSZ2HANAPQ,7869
|
|
30
|
-
kmoe_manga_downloader-1.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
31
|
-
kmoe_manga_downloader-1.1.2.dist-info/entry_points.txt,sha256=DGMytQAhx4uNuKQL7BPkiWESHLXkH-2KSEqwHdygNPA,47
|
|
32
|
-
kmoe_manga_downloader-1.1.2.dist-info/top_level.txt,sha256=e0qxOgWp0tl3GLpmXGjZv3--q_TLoJ7GztM48Ov27wM,5
|
|
33
|
-
kmoe_manga_downloader-1.1.2.dist-info/RECORD,,
|
|
File without changes
|
{kmoe_manga_downloader-1.1.2.dist-info → kmoe_manga_downloader-1.2.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{kmoe_manga_downloader-1.1.2.dist-info → kmoe_manga_downloader-1.2.0.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{kmoe_manga_downloader-1.1.2.dist-info → kmoe_manga_downloader-1.2.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|