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.
Files changed (43) hide show
  1. {kmoe_manga_downloader-1.1.0/src/kmoe_manga_downloader.egg-info → kmoe_manga_downloader-1.1.1}/PKG-INFO +1 -1
  2. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/pyproject.toml +1 -1
  3. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/downloader/DirectDownloader.py +2 -2
  4. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/downloader/ReferViaDownloader.py +2 -2
  5. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/downloader/utils.py +18 -3
  6. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1/src/kmoe_manga_downloader.egg-info}/PKG-INFO +1 -1
  7. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/SOURCES.txt +0 -1
  8. kmoe_manga_downloader-1.1.0/tests/test_kmdr_login.py +0 -29
  9. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/LICENSE +0 -0
  10. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/README.md +0 -0
  11. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/setup.cfg +0 -0
  12. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/__init__.py +0 -0
  13. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/__init__.py +0 -0
  14. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/bases.py +0 -0
  15. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/defaults.py +0 -0
  16. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/error.py +0 -0
  17. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/registry.py +0 -0
  18. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/structure.py +0 -0
  19. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/core/utils.py +0 -0
  20. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/main.py +0 -0
  21. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/__init__.py +0 -0
  22. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/authenticator/CookieAuthenticator.py +0 -0
  23. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/authenticator/LoginAuthenticator.py +0 -0
  24. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/authenticator/utils.py +0 -0
  25. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/ConfigClearer.py +0 -0
  26. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/ConfigUnsetter.py +0 -0
  27. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/OptionLister.py +0 -0
  28. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/OptionSetter.py +0 -0
  29. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/configurer/option_validate.py +0 -0
  30. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/lister/BookUrlLister.py +0 -0
  31. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/lister/FollowedBookLister.py +0 -0
  32. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/lister/utils.py +0 -0
  33. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/picker/ArgsFilterPicker.py +0 -0
  34. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/picker/DefaultVolPicker.py +0 -0
  35. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmdr/module/picker/utils.py +0 -0
  36. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/dependency_links.txt +0 -0
  37. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/entry_points.txt +0 -0
  38. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/requires.txt +0 -0
  39. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/src/kmoe_manga_downloader.egg-info/top_level.txt +0 -0
  40. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_cache_by_kwargs.py +0 -0
  41. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_kmdr_config_option.py +0 -0
  42. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_kmdr_download.py +0 -0
  43. {kmoe_manga_downloader-1.1.0 → kmoe_manga_downloader-1.1.1}/tests/test_utils_resolve_volme.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kmoe-manga-downloader
3
- Version: 1.1.0
3
+ Version: 1.1.1
4
4
  Summary: A CLI-downloader for site @kox.moe.
5
5
  Author-email: Chris Zheng <chrisis58@outlook.com>
6
6
  License: MIT License
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kmoe-manga-downloader"
3
- version = "1.1.0"
3
+ version = "1.1.1"
4
4
  authors = [
5
5
  { name="Chris Zheng", email="chrisis58@outlook.com" },
6
6
  ]
@@ -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"
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kmoe-manga-downloader
3
- Version: 1.1.0
3
+ Version: 1.1.1
4
4
  Summary: A CLI-downloader for site @kox.moe.
5
5
  Author-email: Chris Zheng <chrisis58@outlook.com>
6
6
  License: MIT License
@@ -37,5 +37,4 @@ src/kmoe_manga_downloader.egg-info/top_level.txt
37
37
  tests/test_cache_by_kwargs.py
38
38
  tests/test_kmdr_config_option.py
39
39
  tests/test_kmdr_download.py
40
- tests/test_kmdr_login.py
41
40
  tests/test_utils_resolve_volme.py
@@ -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
- )