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.
- {devart_dl-4.0.1/devart_dl.egg-info → devart_dl-4.0.2}/PKG-INFO +1 -1
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/api.py +14 -4
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/official_api.py +2 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2/devart_dl.egg-info}/PKG-INFO +1 -1
- {devart_dl-4.0.1 → devart_dl-4.0.2}/pyproject.toml +1 -1
- {devart_dl-4.0.1 → devart_dl-4.0.2}/.env.example +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/LICENSE +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/MANIFEST.in +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/README.md +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/README_EN.md +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/bin/devart-dl +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/bin/install.sh +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/__init__.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/archive.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/auth.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/cli.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/download.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/errors.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/http.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/manager.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/models.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/oauth.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/path.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/provider.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/da_downloader/targets.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/SOURCES.txt +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/dependency_links.txt +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/entry_points.txt +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/requires.txt +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/devart_dl.egg-info/top_level.txt +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/requirements.txt +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/setup.cfg +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/setup.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_api.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_archive.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_cli.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_download.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_http_downloader.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_manager.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_official_provider.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_path.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_provider.py +0 -0
- {devart_dl-4.0.1 → devart_dl-4.0.2}/tests/test_targets.py +0 -0
|
@@ -324,14 +324,24 @@ class DeviantArtAPI:
|
|
|
324
324
|
None,
|
|
325
325
|
)
|
|
326
326
|
|
|
327
|
-
|
|
328
|
-
|
|
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:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devart-dl"
|
|
7
|
-
version = "4.0.
|
|
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
|
|
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
|
|
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
|