devart-dl 4.0.1__tar.gz → 4.0.2__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. {devart_dl-4.0.1/devart_dl.egg-info → devart_dl-4.0.2}/PKG-INFO +1 -1
  2. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/api.py +14 -4
  3. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/official_api.py +2 -0
  4. {devart_dl-4.0.1 → devart_dl-4.0.2/devart_dl.egg-info}/PKG-INFO +1 -1
  5. {devart_dl-4.0.1 → devart_dl-4.0.2}/pyproject.toml +1 -1
  6. {devart_dl-4.0.1 → devart_dl-4.0.2}/.env.example +0 -0
  7. {devart_dl-4.0.1 → devart_dl-4.0.2}/LICENSE +0 -0
  8. {devart_dl-4.0.1 → devart_dl-4.0.2}/MANIFEST.in +0 -0
  9. {devart_dl-4.0.1 → devart_dl-4.0.2}/README.md +0 -0
  10. {devart_dl-4.0.1 → devart_dl-4.0.2}/README_EN.md +0 -0
  11. {devart_dl-4.0.1 → devart_dl-4.0.2}/bin/devart-dl +0 -0
  12. {devart_dl-4.0.1 → devart_dl-4.0.2}/bin/install.sh +0 -0
  13. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/__init__.py +0 -0
  14. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/archive.py +0 -0
  15. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/auth.py +0 -0
  16. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/cli.py +0 -0
  17. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/download.py +0 -0
  18. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/errors.py +0 -0
  19. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/http.py +0 -0
  20. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/manager.py +0 -0
  21. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/models.py +0 -0
  22. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/oauth.py +0 -0
  23. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/path.py +0 -0
  24. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/provider.py +0 -0
  25. {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/targets.py +0 -0
  26. {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/SOURCES.txt +0 -0
  27. {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/dependency_links.txt +0 -0
  28. {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/entry_points.txt +0 -0
  29. {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/requires.txt +0 -0
  30. {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/top_level.txt +0 -0
  31. {devart_dl-4.0.1 → devart_dl-4.0.2}/requirements.txt +0 -0
  32. {devart_dl-4.0.1 → devart_dl-4.0.2}/setup.cfg +0 -0
  33. {devart_dl-4.0.1 → devart_dl-4.0.2}/setup.py +0 -0
  34. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_api.py +0 -0
  35. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_archive.py +0 -0
  36. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_cli.py +0 -0
  37. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_download.py +0 -0
  38. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_http_downloader.py +0 -0
  39. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_manager.py +0 -0
  40. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_official_provider.py +0 -0
  41. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_path.py +0 -0
  42. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_provider.py +0 -0
  43. {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_targets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devart-dl
3
- Version: 4.0.1
3
+ Version: 4.0.2
4
4
  Summary: 专业的 DeviantArt 作品批量下载工具 - Professional DeviantArt batch downloader with anti-ban features
5
5
  Author: DeviantArt Downloader Team
6
6
  License-Expression: MIT
@@ -324,14 +324,24 @@ class DeviantArtAPI:
324
324
  None,
325
325
  )
326
326
 
327
- if not full_view:
328
- logger.warning("Full view not found, using base URI")
327
+ # 现代 DA 的 baseUri 本身就是原始文件(以图片/视频扩展名结尾):
328
+ # 直接 baseUri + token 取原图即可。别拿它拼 fullview 的 /v1/fit|fill
329
+ # 变体模板——那些 URL 即使带 token 也可能返回 400/404(2026-09 实测)。
330
+ def _is_file_url(u: str) -> bool:
331
+ path = str(u).split('?', 1)[0].rstrip('/')
332
+ return bool(re.search(r'\.(?:png|jpe?g|gif|webp|mp4|m4v)$', path, re.I))
333
+
334
+ if _is_file_url(base_uri):
329
335
  url = base_uri
330
- elif full_view.get('b'):
336
+ elif full_view and full_view.get('b'):
331
337
  url = str(full_view['b'])
332
- elif 'c' in full_view:
338
+ elif full_view and 'c' in full_view:
333
339
  url = base_uri + str(full_view['c']).replace('<prettyName>', pretty_name)
340
+ elif full_view:
341
+ logger.warning("Full view has no usable URL, falling back to base URI")
342
+ url = base_uri
334
343
  else:
344
+ logger.warning("Full view not found, using base URI")
335
345
  url = base_uri
336
346
 
337
347
  if token:
@@ -222,6 +222,8 @@ def resolve_uuid(
222
222
 
223
223
  query = {
224
224
  "deviationid": identifier,
225
+ # 该接口自 2026 年起把 type 列为必填枚举(art/journal),缺失返回 400。
226
+ "type": "art",
225
227
  "include_session": "false",
226
228
  "csrf_token": csrf,
227
229
  "mature_content": True,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devart-dl
3
- Version: 4.0.1
3
+ Version: 4.0.2
4
4
  Summary: 专业的 DeviantArt 作品批量下载工具 - Professional DeviantArt batch downloader with anti-ban features
5
5
  Author: DeviantArt Downloader Team
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devart-dl"
7
- version = "4.0.1"
7
+ version = "4.0.2"
8
8
  description = "专业的 DeviantArt 作品批量下载工具 - Professional DeviantArt batch downloader with anti-ban features"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
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