kmoe-manga-downloader 1.1.0__tar.gz → 1.1.1__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.
- {kmoe_manga_downloader-1.1.0/src/kmoe_manga_downloader.egg-info → kmoe_manga_downloader-1.1.1}/PKG-INFO +1 -1
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/pyproject.toml +1 -1
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/downloader/DirectDownloader.py +2 -2
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/downloader/ReferViaDownloader.py +2 -2
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/downloader/utils.py +18 -3
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1/src/kmoe_manga_downloader.egg-info}/PKG-INFO +1 -1
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/SOURCES.txt +0 -1
- kmoe_manga_downloader-1.1.0/tests/test_kmdr_login.py +0 -29
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/LICENSE +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/README.md +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/setup.cfg +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/__init__.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/__init__.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/bases.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/defaults.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/error.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/registry.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/structure.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/utils.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/main.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/__init__.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/authenticator/CookieAuthenticator.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/authenticator/LoginAuthenticator.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/authenticator/utils.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/ConfigClearer.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/ConfigUnsetter.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/OptionLister.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/OptionSetter.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/option_validate.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/lister/BookUrlLister.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/lister/FollowedBookLister.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/lister/utils.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/picker/ArgsFilterPicker.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/picker/DefaultVolPicker.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/picker/utils.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/dependency_links.txt +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/entry_points.txt +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/requires.txt +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/top_level.txt +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_cache_by_kwargs.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_kmdr_config_option.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_kmdr_download.py +0 -0
- {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_utils_resolve_volme.py +0 -0
|
@@ -17,9 +17,9 @@ class DirectDownloader(Downloader):
|
|
|
17
17
|
|
|
18
18
|
download_file(
|
|
19
19
|
self._session,
|
|
20
|
-
self.construct_download_url(book, volume),
|
|
20
|
+
lambda: self.construct_download_url(book, volume),
|
|
21
21
|
download_path,
|
|
22
|
-
f'[Kmoe][{book.name}][{volume.name}].epub',
|
|
22
|
+
safe_filename(f'[Kmoe][{book.name}][{volume.name}].epub'),
|
|
23
23
|
retry,
|
|
24
24
|
callback=lambda: self._callback(book, volume) if self._callback else None
|
|
25
25
|
)
|
|
@@ -23,9 +23,9 @@ class ReferViaDownloader(Downloader):
|
|
|
23
23
|
|
|
24
24
|
download_file(
|
|
25
25
|
self._session if not self._scraper else self._scraper,
|
|
26
|
-
self.fetch_download_url(book_id=book.id, volume_id=volume.id),
|
|
26
|
+
lambda: self.fetch_download_url(book_id=book.id, volume_id=volume.id),
|
|
27
27
|
download_path,
|
|
28
|
-
f'[Kmoe][{book.name}][{volume.name}].epub',
|
|
28
|
+
safe_filename(f'[Kmoe][{book.name}][{volume.name}].epub'),
|
|
29
29
|
retry,
|
|
30
30
|
headers={
|
|
31
31
|
"X-Km-From": "kb_http_down"
|
{kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/downloader/utils.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Callable, Optional
|
|
1
|
+
from typing import Callable, Optional, Union
|
|
2
2
|
import os
|
|
3
3
|
import time
|
|
4
4
|
from functools import wraps
|
|
@@ -13,7 +13,7 @@ MIN_BLOCK_SIZE = 2048
|
|
|
13
13
|
|
|
14
14
|
def download_file(
|
|
15
15
|
session: Session,
|
|
16
|
-
url: str,
|
|
16
|
+
url: Union[str, Callable[[], str]],
|
|
17
17
|
dest_path: str,
|
|
18
18
|
filename: str,
|
|
19
19
|
retry_times: int = 0,
|
|
@@ -21,10 +21,22 @@ def download_file(
|
|
|
21
21
|
callback: Optional[Callable] = None,
|
|
22
22
|
block_size: int = 8192
|
|
23
23
|
):
|
|
24
|
+
"""
|
|
25
|
+
下载文件
|
|
26
|
+
|
|
27
|
+
:param session: requests.Session 对象
|
|
28
|
+
:param url: 下载链接或者其 Supplier
|
|
29
|
+
:param dest_path: 目标路径
|
|
30
|
+
:param filename: 文件名
|
|
31
|
+
:param retry_times: 重试次数
|
|
32
|
+
:param headers: 请求头
|
|
33
|
+
:param callback: 下载完成后的回调函数
|
|
34
|
+
:param block_size: 块大小
|
|
35
|
+
"""
|
|
24
36
|
if headers is None:
|
|
25
37
|
headers = {}
|
|
26
38
|
filename_downloading = f'{filename}.downloading'
|
|
27
|
-
|
|
39
|
+
|
|
28
40
|
file_path = f'{dest_path}/{filename}'
|
|
29
41
|
tmp_file_path = f'{dest_path}/{filename_downloading}'
|
|
30
42
|
|
|
@@ -34,6 +46,9 @@ def download_file(
|
|
|
34
46
|
if os.path.exists(file_path):
|
|
35
47
|
tqdm.write(f"{filename} already exists.")
|
|
36
48
|
return
|
|
49
|
+
|
|
50
|
+
if callable(url):
|
|
51
|
+
url = url()
|
|
37
52
|
|
|
38
53
|
resume_from = 0
|
|
39
54
|
total_size_in_bytes = 0
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
import unittest
|
|
4
|
-
from argparse import Namespace
|
|
5
|
-
|
|
6
|
-
from kmdr.core.utils import clear_session_context
|
|
7
|
-
from kmdr.main import main as kmdr_main
|
|
8
|
-
|
|
9
|
-
KMOE_USERNAME = os.environ.get('KMOE_USERNAME')
|
|
10
|
-
KMOE_PASSWORD = os.environ.get('KMOE_PASSWORD')
|
|
11
|
-
|
|
12
|
-
@unittest.skipUnless(KMOE_USERNAME and KMOE_PASSWORD, "KMOE_USERNAME and KMOE_PASSWORD must be set in environment variables")
|
|
13
|
-
class TestKmdrLogin(unittest.TestCase):
|
|
14
|
-
|
|
15
|
-
@classmethod
|
|
16
|
-
def tearDownClass(cls):
|
|
17
|
-
clear_session_context()
|
|
18
|
-
|
|
19
|
-
def test_login_with_username_and_password(self):
|
|
20
|
-
assert KMOE_USERNAME and KMOE_PASSWORD, "KMOE_USERNAME and KMOE_PASSWORD must be set in environment variables"
|
|
21
|
-
|
|
22
|
-
kmdr_main(
|
|
23
|
-
Namespace(
|
|
24
|
-
command='login',
|
|
25
|
-
username=KMOE_USERNAME,
|
|
26
|
-
password=KMOE_PASSWORD,
|
|
27
|
-
show_quota=False
|
|
28
|
-
)
|
|
29
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/authenticator/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/lister/BookUrlLister.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_kmdr_config_option.py
RENAMED
|
File without changes
|
|
File without changes
|
{kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_utils_resolve_volme.py
RENAMED
|
File without changes
|