devart-dl 3.2.4__tar.gz → 3.3.0__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-3.2.4/devart_dl.egg-info → devart_dl-3.3.0}/PKG-INFO +7 -3
- {devart_dl-3.2.4 → devart_dl-3.3.0}/README.md +6 -2
- {devart_dl-3.2.4 → devart_dl-3.3.0}/README_EN.md +45 -13
- {devart_dl-3.2.4 → devart_dl-3.3.0}/da_downloader/api.py +32 -3
- {devart_dl-3.2.4 → devart_dl-3.3.0}/da_downloader/config.py +1 -1
- {devart_dl-3.2.4 → devart_dl-3.3.0/devart_dl.egg-info}/PKG-INFO +7 -3
- {devart_dl-3.2.4 → devart_dl-3.3.0}/pyproject.toml +1 -1
- {devart_dl-3.2.4 → devart_dl-3.3.0}/setup.py +1 -1
- {devart_dl-3.2.4 → devart_dl-3.3.0}/.env.example +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/LICENSE +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/MANIFEST.in +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/bin/devart-dl +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/bin/install.sh +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/da_downloader/__init__.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/da_downloader/auth.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/da_downloader/downloader.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/da_downloader/models.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/da_downloader/progress.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/da_downloader/utils.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/devart_dl.egg-info/SOURCES.txt +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/devart_dl.egg-info/dependency_links.txt +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/devart_dl.egg-info/entry_points.txt +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/devart_dl.egg-info/not-zip-safe +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/devart_dl.egg-info/requires.txt +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/devart_dl.egg-info/top_level.txt +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/__init__.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/core/__init__.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/core/api_client.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/core/downloader.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/models/__init__.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/models/config.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/models/deviation.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/models/download.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/tests/__init__.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/tests/conftest.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/deviantart_dl/tests/test_models.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/requirements.txt +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/setup.cfg +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/COOKIE_EXPORT_GUIDE.md +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/anti_ban_config.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/auth_manager.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/browser_login.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/cookie_loader.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/download_artist.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/download_url.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/file_organizer.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/i18n.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/logger.py +0 -0
- {devart_dl-3.2.4 → devart_dl-3.3.0}/tools/validate_cookies.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devart-dl
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.0
|
|
4
4
|
Summary: 专业的 DeviantArt 作品批量下载工具 - Professional DeviantArt batch downloader with anti-ban features
|
|
5
5
|
Home-page: https://github.com/zoidberg-xgd/deviantart-downloader
|
|
6
6
|
Author: DeviantArt Downloader Team
|
|
@@ -72,9 +72,13 @@ Dynamic: requires-python
|
|
|
72
72
|
- **5种登录方式** - Cookie文件、交互输入、会话保存、环境变量、浏览器
|
|
73
73
|
- **智能防封** - 4种预设模式、自动延迟、速率限制
|
|
74
74
|
- **灵活下载** - URL单图、作者全集、画廊批量、搜索过滤
|
|
75
|
-
-
|
|
75
|
+
- **断点续传** NEW - 中断后自动继续,智能跳过已下载
|
|
76
|
+
- **失败重试** NEW - 网络错误自动重试3次
|
|
77
|
+
- **1080p视频** NEW - 自动选择最高质量视频
|
|
78
|
+
- **自动代理** NEW - 从环境变量自动加载代理
|
|
79
|
+
- **增强日志** - 彩色输出、文件记录、登录状态显示
|
|
76
80
|
- **国际化** - 中文/英文双语支持,自动检测
|
|
77
|
-
- **高性能** -
|
|
81
|
+
- **高性能** - 异步下载架构,快速跳过已存在文件
|
|
78
82
|
- **零配置** - 开箱即用,渐进增强
|
|
79
83
|
- **模块化** - 清晰的项目结构,易于维护
|
|
80
84
|
|
|
@@ -20,9 +20,13 @@
|
|
|
20
20
|
- **5种登录方式** - Cookie文件、交互输入、会话保存、环境变量、浏览器
|
|
21
21
|
- **智能防封** - 4种预设模式、自动延迟、速率限制
|
|
22
22
|
- **灵活下载** - URL单图、作者全集、画廊批量、搜索过滤
|
|
23
|
-
-
|
|
23
|
+
- **断点续传** NEW - 中断后自动继续,智能跳过已下载
|
|
24
|
+
- **失败重试** NEW - 网络错误自动重试3次
|
|
25
|
+
- **1080p视频** NEW - 自动选择最高质量视频
|
|
26
|
+
- **自动代理** NEW - 从环境变量自动加载代理
|
|
27
|
+
- **增强日志** - 彩色输出、文件记录、登录状态显示
|
|
24
28
|
- **国际化** - 中文/英文双语支持,自动检测
|
|
25
|
-
- **高性能** -
|
|
29
|
+
- **高性能** - 异步下载架构,快速跳过已存在文件
|
|
26
30
|
- **零配置** - 开箱即用,渐进增强
|
|
27
31
|
- **模块化** - 清晰的项目结构,易于维护
|
|
28
32
|
|
|
@@ -12,22 +12,25 @@ A powerful, feature-rich DeviantArt artwork downloader with intelligent file org
|
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
15
|
+
## Core Features
|
|
16
|
+
|
|
17
|
+
- **Unified CLI** - Single `devart-dl` command for all features
|
|
18
|
+
- **5 Login Methods** - Cookie file, interactive, session save, env var, browser
|
|
19
|
+
- **Smart Anti-Ban** - 4 preset modes, auto delay, rate limiting
|
|
20
|
+
- **Flexible Download** - Single URL, author gallery, batch, search filter
|
|
21
|
+
- **Resume Support** - Auto-resume after interruption, skip downloaded
|
|
22
|
+
- **Auto Retry** - Network errors auto-retry 3 times
|
|
23
|
+
- **1080p Videos** - Auto-select highest quality videos
|
|
24
|
+
- **Auto Proxy** - Auto-load proxy from environment variables
|
|
25
|
+
- **Enhanced Logging** - Colored output, file logging, login status display
|
|
26
|
+
- **Internationalization** - Chinese/English bilingual support
|
|
27
|
+
- **High Performance** - Async download, fast skip existing files
|
|
28
|
+
- **Zero Config** - Works out of box, progressive enhancement
|
|
29
|
+
- **Modular** - Clean project structure, easy to maintain
|
|
27
30
|
|
|
28
31
|
---
|
|
29
32
|
|
|
30
|
-
##
|
|
33
|
+
## Quick Start
|
|
31
34
|
|
|
32
35
|
### Installation
|
|
33
36
|
|
|
@@ -73,6 +76,35 @@ devart-dl gallery username
|
|
|
73
76
|
devart-dl search username "keyword"
|
|
74
77
|
```
|
|
75
78
|
|
|
79
|
+
### ⭐ v3.2.4 New Features Quick Start
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# 1. Auto Proxy + Auto Login (Recommended Setup)
|
|
83
|
+
export ALL_PROXY=http://127.0.0.1:7890 # Set proxy
|
|
84
|
+
devart-dl login interactive # One-time login
|
|
85
|
+
devart-dl artist username # Auto-loads proxy & cookies
|
|
86
|
+
|
|
87
|
+
# 2. Resume Support (Continue after interruption)
|
|
88
|
+
devart-dl artist username --ask=0 # Start download
|
|
89
|
+
# Press Ctrl+C to interrupt
|
|
90
|
+
devart-dl artist username --ask=0 # Re-run, auto-skips downloaded
|
|
91
|
+
|
|
92
|
+
# 3. 1080p HD Video Downloads
|
|
93
|
+
devart-dl artist username --ask=0 # Auto-downloads 1080p videos
|
|
94
|
+
|
|
95
|
+
# 4. Login Status Display
|
|
96
|
+
# Automatically shows at start:
|
|
97
|
+
# 🔓 Login Status: ✅ LOGGED IN
|
|
98
|
+
# You can download original quality and mature content
|
|
99
|
+
|
|
100
|
+
# 5. High-Performance Batch Downloads
|
|
101
|
+
devart-dl artist username --ask=0 --proxy=http://127.0.0.1:7890
|
|
102
|
+
# ✓ Auto-skip existing files
|
|
103
|
+
# ✓ Auto-retry failures 3 times
|
|
104
|
+
# ✓ Real-time progress display
|
|
105
|
+
# ✓ 1080p video quality
|
|
106
|
+
```
|
|
107
|
+
|
|
76
108
|
---
|
|
77
109
|
|
|
78
110
|
## 📥 Main Features
|
|
@@ -319,7 +319,7 @@ class DeviantArtAPI:
|
|
|
319
319
|
return url
|
|
320
320
|
|
|
321
321
|
def download_file(self, url: str, timeout: int = 180) -> Optional[bytes]:
|
|
322
|
-
"""
|
|
322
|
+
"""下载文件内容(带进度显示)"""
|
|
323
323
|
logger.debug(f"Downloading: {url}")
|
|
324
324
|
|
|
325
325
|
for attempt in range(self.max_retries):
|
|
@@ -329,10 +329,39 @@ class DeviantArtAPI:
|
|
|
329
329
|
headers=self.headers,
|
|
330
330
|
proxies=self.proxies,
|
|
331
331
|
allow_redirects=True,
|
|
332
|
-
timeout=timeout
|
|
332
|
+
timeout=timeout,
|
|
333
|
+
stream=True # 启用流式下载
|
|
333
334
|
)
|
|
334
335
|
response.raise_for_status()
|
|
335
|
-
|
|
336
|
+
|
|
337
|
+
# 获取文件大小
|
|
338
|
+
total_size = int(response.headers.get('content-length', 0))
|
|
339
|
+
|
|
340
|
+
# 流式下载并显示进度
|
|
341
|
+
if total_size > 0:
|
|
342
|
+
downloaded = 0
|
|
343
|
+
chunks = []
|
|
344
|
+
chunk_size = 8192
|
|
345
|
+
last_reported = 0 # 上次报告的百分比
|
|
346
|
+
|
|
347
|
+
for chunk in response.iter_content(chunk_size=chunk_size):
|
|
348
|
+
if chunk:
|
|
349
|
+
chunks.append(chunk)
|
|
350
|
+
downloaded += len(chunk)
|
|
351
|
+
|
|
352
|
+
# 每10%显示一次进度,避免刷屏
|
|
353
|
+
progress = (downloaded / total_size) * 100
|
|
354
|
+
progress_10 = int(progress / 10) * 10 # 取整到10的倍数
|
|
355
|
+
|
|
356
|
+
if progress_10 > last_reported and progress_10 % 10 == 0:
|
|
357
|
+
logger.info(f" 下载中: {progress_10}% ({downloaded / 1024 / 1024:.1f} MB / {total_size / 1024 / 1024:.1f} MB)")
|
|
358
|
+
last_reported = progress_10
|
|
359
|
+
|
|
360
|
+
return b''.join(chunks)
|
|
361
|
+
else:
|
|
362
|
+
# 大小未知,直接下载
|
|
363
|
+
return response.content
|
|
364
|
+
|
|
336
365
|
except RequestException as e:
|
|
337
366
|
logger.warning(f"Download failed (attempt {attempt + 1}/{self.max_retries}): {e}")
|
|
338
367
|
if attempt < self.max_retries - 1:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devart-dl
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.0
|
|
4
4
|
Summary: 专业的 DeviantArt 作品批量下载工具 - Professional DeviantArt batch downloader with anti-ban features
|
|
5
5
|
Home-page: https://github.com/zoidberg-xgd/deviantart-downloader
|
|
6
6
|
Author: DeviantArt Downloader Team
|
|
@@ -72,9 +72,13 @@ Dynamic: requires-python
|
|
|
72
72
|
- **5种登录方式** - Cookie文件、交互输入、会话保存、环境变量、浏览器
|
|
73
73
|
- **智能防封** - 4种预设模式、自动延迟、速率限制
|
|
74
74
|
- **灵活下载** - URL单图、作者全集、画廊批量、搜索过滤
|
|
75
|
-
-
|
|
75
|
+
- **断点续传** NEW - 中断后自动继续,智能跳过已下载
|
|
76
|
+
- **失败重试** NEW - 网络错误自动重试3次
|
|
77
|
+
- **1080p视频** NEW - 自动选择最高质量视频
|
|
78
|
+
- **自动代理** NEW - 从环境变量自动加载代理
|
|
79
|
+
- **增强日志** - 彩色输出、文件记录、登录状态显示
|
|
76
80
|
- **国际化** - 中文/英文双语支持,自动检测
|
|
77
|
-
- **高性能** -
|
|
81
|
+
- **高性能** - 异步下载架构,快速跳过已存在文件
|
|
78
82
|
- **零配置** - 开箱即用,渐进增强
|
|
79
83
|
- **模块化** - 清晰的项目结构,易于维护
|
|
80
84
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devart-dl"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.3.0"
|
|
8
8
|
description = "专业的 DeviantArt 作品批量下载工具 - Professional DeviantArt batch downloader with anti-ban features"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.6"
|
|
@@ -12,7 +12,7 @@ long_description = (this_directory / "README.md").read_text(encoding='utf-8')
|
|
|
12
12
|
|
|
13
13
|
setup(
|
|
14
14
|
name="devart-dl", # 更简短独特的包名
|
|
15
|
-
version="3.
|
|
15
|
+
version="3.3.0",
|
|
16
16
|
author="zoidberg-xgd",
|
|
17
17
|
author_email="",
|
|
18
18
|
description="Professional DeviantArt batch downloader with multiple login methods and anti-ban protection",
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|