pixivflow 2.0.39 → 2.0.41

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 (114) hide show
  1. package/README.md +94 -572
  2. package/dist/cli/ArgumentParser.d.ts +2 -20
  3. package/dist/cli/ArgumentParser.d.ts.map +1 -1
  4. package/dist/cli/ArgumentParser.js +16 -29
  5. package/dist/cli/ArgumentParser.js.map +1 -1
  6. package/dist/commands/BackupCommand.d.ts +6 -0
  7. package/dist/commands/BackupCommand.d.ts.map +1 -1
  8. package/dist/commands/BackupCommand.js +6 -0
  9. package/dist/commands/BackupCommand.js.map +1 -1
  10. package/dist/commands/Command.d.ts +16 -0
  11. package/dist/commands/Command.d.ts.map +1 -1
  12. package/dist/commands/Command.js +9 -0
  13. package/dist/commands/Command.js.map +1 -1
  14. package/dist/commands/CommandRegistry.d.ts +24 -0
  15. package/dist/commands/CommandRegistry.d.ts.map +1 -1
  16. package/dist/commands/CommandRegistry.js +48 -0
  17. package/dist/commands/CommandRegistry.js.map +1 -1
  18. package/dist/commands/ConfigCommand.d.ts +6 -0
  19. package/dist/commands/ConfigCommand.d.ts.map +1 -1
  20. package/dist/commands/ConfigCommand.js +6 -0
  21. package/dist/commands/ConfigCommand.js.map +1 -1
  22. package/dist/commands/DirsCommand.d.ts +6 -0
  23. package/dist/commands/DirsCommand.d.ts.map +1 -1
  24. package/dist/commands/DirsCommand.js +6 -0
  25. package/dist/commands/DirsCommand.js.map +1 -1
  26. package/dist/commands/DownloadCommand.d.ts +6 -0
  27. package/dist/commands/DownloadCommand.d.ts.map +1 -1
  28. package/dist/commands/DownloadCommand.js +7 -1
  29. package/dist/commands/DownloadCommand.js.map +1 -1
  30. package/dist/commands/HealthCommand.d.ts +7 -0
  31. package/dist/commands/HealthCommand.d.ts.map +1 -1
  32. package/dist/commands/HealthCommand.js +7 -0
  33. package/dist/commands/HealthCommand.js.map +1 -1
  34. package/dist/commands/HelpCommand.d.ts +7 -0
  35. package/dist/commands/HelpCommand.d.ts.map +1 -1
  36. package/dist/commands/HelpCommand.js +22 -29
  37. package/dist/commands/HelpCommand.js.map +1 -1
  38. package/dist/commands/LoginCommand.d.ts +7 -0
  39. package/dist/commands/LoginCommand.d.ts.map +1 -1
  40. package/dist/commands/LoginCommand.js +7 -0
  41. package/dist/commands/LoginCommand.js.map +1 -1
  42. package/dist/commands/LoginHeadlessCommand.d.ts +7 -0
  43. package/dist/commands/LoginHeadlessCommand.d.ts.map +1 -1
  44. package/dist/commands/LoginHeadlessCommand.js +7 -0
  45. package/dist/commands/LoginHeadlessCommand.js.map +1 -1
  46. package/dist/commands/LogsCommand.d.ts +6 -0
  47. package/dist/commands/LogsCommand.d.ts.map +1 -1
  48. package/dist/commands/LogsCommand.js +6 -0
  49. package/dist/commands/LogsCommand.js.map +1 -1
  50. package/dist/commands/MaintainCommand.d.ts +6 -0
  51. package/dist/commands/MaintainCommand.d.ts.map +1 -1
  52. package/dist/commands/MaintainCommand.js +6 -0
  53. package/dist/commands/MaintainCommand.js.map +1 -1
  54. package/dist/commands/MigrateConfigCommand.d.ts +6 -0
  55. package/dist/commands/MigrateConfigCommand.d.ts.map +1 -1
  56. package/dist/commands/MigrateConfigCommand.js +6 -0
  57. package/dist/commands/MigrateConfigCommand.js.map +1 -1
  58. package/dist/commands/MonitorCommand.d.ts +6 -0
  59. package/dist/commands/MonitorCommand.d.ts.map +1 -1
  60. package/dist/commands/MonitorCommand.js +6 -0
  61. package/dist/commands/MonitorCommand.js.map +1 -1
  62. package/dist/commands/NormalizeCommand.d.ts +6 -0
  63. package/dist/commands/NormalizeCommand.d.ts.map +1 -1
  64. package/dist/commands/NormalizeCommand.js +6 -0
  65. package/dist/commands/NormalizeCommand.js.map +1 -1
  66. package/dist/commands/RandomDownloadCommand.d.ts +7 -1
  67. package/dist/commands/RandomDownloadCommand.d.ts.map +1 -1
  68. package/dist/commands/RandomDownloadCommand.js +7 -1
  69. package/dist/commands/RandomDownloadCommand.js.map +1 -1
  70. package/dist/commands/RefreshCommand.d.ts +12 -0
  71. package/dist/commands/RefreshCommand.d.ts.map +1 -1
  72. package/dist/commands/RefreshCommand.js +82 -0
  73. package/dist/commands/RefreshCommand.js.map +1 -1
  74. package/dist/commands/SchedulerCommand.d.ts +6 -0
  75. package/dist/commands/SchedulerCommand.d.ts.map +1 -1
  76. package/dist/commands/SchedulerCommand.js +7 -1
  77. package/dist/commands/SchedulerCommand.js.map +1 -1
  78. package/dist/commands/SetupCommand.d.ts +6 -0
  79. package/dist/commands/SetupCommand.d.ts.map +1 -1
  80. package/dist/commands/SetupCommand.js +6 -0
  81. package/dist/commands/SetupCommand.js.map +1 -1
  82. package/dist/commands/StatusCommand.d.ts +6 -0
  83. package/dist/commands/StatusCommand.d.ts.map +1 -1
  84. package/dist/commands/StatusCommand.js +6 -0
  85. package/dist/commands/StatusCommand.js.map +1 -1
  86. package/dist/commands/VersionCommand.d.ts +21 -0
  87. package/dist/commands/VersionCommand.d.ts.map +1 -0
  88. package/dist/commands/VersionCommand.js +81 -0
  89. package/dist/commands/VersionCommand.js.map +1 -0
  90. package/dist/commands/WebUICommand.d.ts +6 -0
  91. package/dist/commands/WebUICommand.d.ts.map +1 -1
  92. package/dist/commands/WebUICommand.js +6 -0
  93. package/dist/commands/WebUICommand.js.map +1 -1
  94. package/dist/commands/index.d.ts +2 -1
  95. package/dist/commands/index.d.ts.map +1 -1
  96. package/dist/commands/index.js +4 -1
  97. package/dist/commands/index.js.map +1 -1
  98. package/dist/commands/metadata.d.ts +38 -0
  99. package/dist/commands/metadata.d.ts.map +1 -0
  100. package/dist/commands/metadata.js +42 -0
  101. package/dist/commands/metadata.js.map +1 -0
  102. package/dist/commands/suggestions.d.ts +22 -0
  103. package/dist/commands/suggestions.d.ts.map +1 -0
  104. package/dist/commands/suggestions.js +85 -0
  105. package/dist/commands/suggestions.js.map +1 -0
  106. package/dist/index.js +126 -343
  107. package/dist/index.js.map +1 -1
  108. package/dist/package.json +1 -1
  109. package/dist/utils/errors.d.ts +14 -0
  110. package/dist/utils/errors.d.ts.map +1 -1
  111. package/dist/utils/errors.js +24 -1
  112. package/dist/utils/errors.js.map +1 -1
  113. package/dist/webui/package.json +1 -1
  114. package/package.json +1 -1
package/README.md CHANGED
@@ -22,84 +22,15 @@
22
22
  [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg?style=flat-square)](https://github.com/zoidberg-xgd/pixivflow)
23
23
  [![Maintenance](https://img.shields.io/badge/Maintained-yes-green.svg?style=for-the-badge)](https://github.com/zoidberg-xgd/pixivflow/graphs/commit-activity)
24
24
 
25
- [功能特性](#功能特性) • [快速开始](#快速开始) • [CLI 命令](#cli-命令行工具) • [脚本工具](#脚本工具) • [使用场景](#使用场景)
26
-
27
25
  [📖 完整教程文档](https://zoidberg-xgd.github.io/PixivFlow/) | [English](README_EN.md) | [中文](README.md)
28
26
 
29
27
  </div>
30
28
 
31
29
  ---
32
30
 
33
- ## 目录
34
-
35
- <details>
36
- <summary><b>点击展开完整目录</b></summary>
37
-
38
- <br>
39
-
40
- **入门指南**
41
- - [什么是 PixivFlow?](#什么是-pixivflow)
42
- - [为什么选择 PixivFlow?](#为什么选择-pixivflow)
43
- - [核心理念](#核心理念)
44
- - [功能特性](#功能特性)
45
- - [核心功能](#核心功能)
46
- - [额外优势](#额外优势)
47
- - [快速开始](#快速开始)
48
- - [环境要求](#环境要求)
49
- - [快速安装(推荐 ⭐)](#快速安装推荐)
50
- - [安装方式说明](#安装方式说明)
51
- - [WebUI 后端 API(可选)](#webui-后端-api可选)
52
- - [Docker 部署(推荐)](#docker-部署推荐)
53
-
54
- **工具与文档**
55
- - [CLI 命令行工具](#cli-命令行工具)
56
- - [核心命令](#核心命令)
57
- - [配置管理](#配置管理)
58
- - [监控与维护](#监控与维护)
59
- - [脚本工具](#脚本工具)
60
- - [主控脚本(最常用)](#主控脚本最常用)
61
- - [无图形界面服务器的登录方式(使用现有 refresh token)](#无图形界面服务器的登录方式使用现有-refresh-token)
62
- - [文档导航](#文档导航)
63
- - [新手必读(按顺序阅读)](#新手必读按顺序阅读)
64
- - [功能指南](#功能指南)
65
- - [部署和环境](#部署和环境)
66
- - [项目文档](#项目文档)
67
-
68
- **使用与配置**
69
- - [使用场景](#使用场景)
70
- - [场景 1:每日自动收集灵感素材](#场景-1每日自动收集灵感素材)
71
- - [场景 2:服务器定时收集特定标签](#场景-2服务器定时收集特定标签)
72
- - [场景 3:快速体验 - 随机下载](#场景-3快速体验-随机下载)
73
- - [场景 4:一次性批量下载](#场景-4一次性批量下载)
74
- - [项目结构](#项目结构)
75
- - [核心配置](#核心配置)
76
- - [认证配置](#认证配置)
77
- - [下载目标](#下载目标)
78
- - [定时任务](#定时任务)
79
- - [存储配置](#存储配置)
80
-
81
- **故障排除与进阶**
82
- - [常见问题](docs/USAGE.md)
83
- - [安全提示](docs/USAGE.md)
84
- - [下载记录管理](docs/USAGE.md)
85
- - [进阶使用](docs/USAGE.md)
86
- - [服务器部署](docs/DOCKER.md)
87
- - [配置多个下载任务](docs/CONFIG.md)
88
- - [使用代理](docs/USAGE.md)
89
-
90
- **最佳实践**
91
- - [最佳实践](docs/USAGE.md)
92
-
93
- **项目信息**
94
- - [开源许可](#开源许可)
95
- - [致谢](#致谢)
96
- - [获取帮助](#获取帮助)
97
- - [项目统计](#项目统计)
98
- - [贡献](#贡献)
99
- - [更新日志](#更新日志)
100
- - [支持项目](#支持项目)
101
-
102
- </details>
31
+ ## 快速导航
32
+
33
+ [功能特性](#功能特性) • [快速开始](#快速开始) • [使用指南](#cli-命令行工具) • [配置说明](#核心配置) • [完整文档](docs/README.md)
103
34
 
104
35
  ---
105
36
 
@@ -108,17 +39,7 @@
108
39
 
109
40
  **PixivFlow** 是一个**完全独立运行**的 Pixiv 作品批量下载工具,专为自动化设计。无需浏览器扩展,可在命令行或服务器上自动化运行,支持定时任务、智能去重、断点续传等功能。
110
41
 
111
- 作为一款专业的 **Pixiv 下载器**,PixivFlow 支持以下核心功能:
112
- - 📥 **批量下载 Pixiv 插画和小说**:支持按标签、用户、收藏数等条件批量下载作品
113
- - 🔗 **URL 直接下载**:支持直接输入 Pixiv URL 进行下载,无需修改配置文件
114
- - 🎯 **单作品下载**:支持通过作品ID直接下载单个插画或小说
115
- - ⏰ **定时自动下载**:使用 Cron 表达式配置定时任务,实现自动化下载
116
- - 🐳 **Docker 部署**:支持 Docker 容器化部署,一键启动
117
- - 🔐 **安全认证**:采用 OAuth 2.0 PKCE 标准流程,保障账号安全
118
- - 💾 **智能去重**:自动记录下载历史,避免重复下载
119
- - 🔄 **断点续传**:下载中断后自动恢复,无需重新开始
120
-
121
- 无论是个人使用还是服务器部署,PixivFlow 都能帮助你高效地收集和管理 Pixiv 作品。
42
+ 作为一款专业的 **Pixiv 下载器**,PixivFlow 提供批量下载、URL 直接下载、定时任务、Docker 部署等核心功能,无论是个人使用还是服务器部署,都能帮助你高效地收集和管理 Pixiv 作品。
122
43
 
123
44
  <a id="为什么选择-pixivflow"></a>
124
45
  ### 为什么选择 PixivFlow?
@@ -127,12 +48,12 @@
127
48
 
128
49
  | 优势 | 说明 |
129
50
  |------|------|
130
- | 🚀 **完全独立运行** | 无需浏览器扩展,纯命令行工具,可在任何环境运行(服务器、Docker、CI/CD) |
131
- | 🤖 **真正的自动化** | 设置一次,永久运行。支持 Cron 定时任务,无需人工干预 |
132
- | 🖥️ **服务器友好** | 专为服务器设计,支持后台运行、进程管理、日志轮转 |
133
- | 🔐 **安全可靠** | 采用 OAuth 2.0 PKCE 标准流程,保障账号安全,避免密码泄露风险 |
134
- | 📦 **轻量级部署** | 资源占用低,无需额外服务(如数据库、Redis),SQLite 即可 |
135
- | 🛠️ **开箱即用** | 丰富的脚本工具和配置向导,3 步即可开始使用 |
51
+ | **完全独立运行** | 无需浏览器扩展,纯命令行工具,可在任何环境运行(服务器、Docker、CI/CD) |
52
+ | **真正的自动化** | 设置一次,永久运行。支持 Cron 定时任务,无需人工干预 |
53
+ | **服务器友好** | 专为服务器设计,支持后台运行、进程管理、日志轮转 |
54
+ | **安全可靠** | 采用 OAuth 2.0 PKCE 标准流程,保障账号安全,避免密码泄露风险 |
55
+ | **轻量级部署** | 资源占用低,无需额外服务(如数据库、Redis),SQLite 即可 |
56
+ | **开箱即用** | 丰富的脚本工具和配置向导,3 步即可开始使用 |
136
57
 
137
58
  <a id="核心理念"></a>
138
59
  ### 核心理念
@@ -152,26 +73,26 @@
152
73
 
153
74
  | 功能 | 说明 |
154
75
  |------|------|
155
- | **📥 批量下载** | 支持插画和小说批量下载,可配置下载数量、筛选条件 |
156
- | **🏷️ 标签搜索** | 按标签搜索作品,支持精确匹配、部分匹配等多种模式 |
157
- | **🎲 随机下载** | 一键下载随机热门标签作品,快速体验工具功能 |
158
- | **⏰ 定时任务** | Cron 表达式配置,支持每天、每周、每月定时自动下载 |
159
- | **🔍 智能筛选** | 按收藏数、日期范围、作品类型等多维度筛选 |
160
- | **🌐 语言检测** | 自动检测小说语言,支持按语言过滤(仅中文/仅非中文) |
161
- | **💾 自动去重** | SQLite 数据库记录历史,自动跳过已下载作品 |
162
- | **🔄 断点续传** | 下载中断后自动恢复,无需重新开始 |
163
- | **🛡️ 错误处理** | 自动重试、错误恢复、智能跳过已删除/私有作品 |
164
- | **📊 统计报告** | 详细的运行日志和下载统计报告 |
76
+ | **批量下载** | 支持插画和小说批量下载,可配置下载数量、筛选条件 |
77
+ | **标签搜索** | 按标签搜索作品,支持精确匹配、部分匹配等多种模式 |
78
+ | **随机下载** | 一键下载随机热门标签作品,快速体验工具功能 |
79
+ | **定时任务** | Cron 表达式配置,支持每天、每周、每月定时自动下载 |
80
+ | **智能筛选** | 按收藏数、日期范围、作品类型等多维度筛选 |
81
+ | **语言检测** | 自动检测小说语言,支持按语言过滤(仅中文/仅非中文) |
82
+ | **自动去重** | SQLite 数据库记录历史,自动跳过已下载作品 |
83
+ | **断点续传** | 下载中断后自动恢复,无需重新开始 |
84
+ | **错误处理** | 自动重试、错误恢复、智能跳过已删除/私有作品 |
85
+ | **统计报告** | 详细的运行日志和下载统计报告 |
165
86
 
166
87
  <a id="额外优势"></a>
167
88
  ### 额外优势
168
89
 
169
- - **完全独立**:无需浏览器,纯命令行工具
170
- - **跨平台支持**:Windows / macOS / Linux,可在任何环境运行
171
- - **轻量级**:资源占用低,适合服务器长期运行
172
- - **开源免费**:GPL-3.0 许可证,可自由定制和分发
173
- - **类型安全**:TypeScript 编写,类型提示完善
174
- - **文档完善**:详细的中文文档和教程
90
+ - **完全独立**:无需浏览器,纯命令行工具
91
+ - **跨平台支持**:Windows / macOS / Linux,可在任何环境运行
92
+ - **轻量级**:资源占用低,适合服务器长期运行
93
+ - **开源免费**:GPL-3.0 许可证,可自由定制和分发
94
+ - **类型安全**:TypeScript 编写,类型提示完善
95
+ - **文档完善**:详细的中文文档和教程
175
96
 
176
97
  ---
177
98
 
@@ -195,7 +116,7 @@
195
116
  > **详细指南**:查看 [快速开始指南](docs/QUICKSTART.md)
196
117
 
197
118
  <a id="快速安装推荐"></a>
198
- ### 快速安装(推荐 ⭐)
119
+ ### 快速安装(推荐)
199
120
 
200
121
  #### 方式 1:从 npm 安装(最简单)
201
122
 
@@ -311,16 +232,16 @@ docker-compose up -d # 启动服务
311
232
  # 全局安装后使用
312
233
  pixivflow login # 登录 Pixiv 账号
313
234
  pixivflow download # 执行下载
314
- pixivflow download --url <url> # 通过 URL 直接下载(支持插画/小说/系列)⭐
235
+ pixivflow download --url <url> # 通过 URL 直接下载(支持插画/小说/系列)
315
236
  pixivflow random # 随机下载
316
237
  pixivflow scheduler # 启动定时任务
317
238
  pixivflow normalize # 整理文件
318
239
  pixivflow migrate-config # 迁移配置
319
- pixivflow health # 健康检查(推荐 ⭐)
240
+ pixivflow health # 健康检查(推荐)
320
241
  pixivflow status # 查看下载统计和最近记录
321
242
  pixivflow logs # 查看运行日志
322
- pixivflow setup # 交互式配置向导(首次使用)⭐
323
- pixivflow dirs # 查看目录信息(文件保存位置)⭐
243
+ pixivflow setup # 交互式配置向导(首次使用)
244
+ pixivflow dirs # 查看目录信息(文件保存位置)
324
245
  ```
325
246
 
326
247
  **URL 下载示例**:
@@ -355,9 +276,9 @@ pixivflow set-token <your_refresh_token>
355
276
  ### 配置管理
356
277
 
357
278
  ```bash
358
- pixivflow config # 配置管理(查看/编辑/备份/恢复)⭐
279
+ pixivflow config # 配置管理(查看/编辑/备份/恢复)
359
280
  pixivflow config show # 查看配置
360
- pixivflow config set <key> <value> # 设置配置项(如:storage.downloadDirectory)⭐
281
+ pixivflow config set <key> <value> # 设置配置项(如:storage.downloadDirectory
361
282
  pixivflow config backup # 备份配置
362
283
  pixivflow config restore # 恢复配置
363
284
  pixivflow config validate # 验证配置
@@ -380,9 +301,9 @@ pixivflow config set storage.novelDirectory ./my-novels
380
301
  ### 监控与维护
381
302
 
382
303
  ```bash
383
- pixivflow monitor # 实时监控进程状态和性能指标
384
- pixivflow maintain # 自动维护(清理日志、优化数据库等)⭐
385
- pixivflow backup # 自动备份配置和数据
304
+ pixivflow monitor # 实时监控进程状态和性能指标
305
+ pixivflow maintain # 自动维护(清理日志、优化数据库等)
306
+ pixivflow backup # 自动备份配置和数据
386
307
  ```
387
308
 
388
309
  > 📖 **详细说明**:查看 [脚本使用指南](docs/SCRIPTS.md)
@@ -418,13 +339,13 @@ PixivFlow 提供了丰富的脚本工具,所有脚本直接调用内置 CLI,
418
339
  | `health` | 健康检查(检查配置、网络等)<br>**全局安装后使用**: `pixivflow health` |
419
340
  | `status` | 查看下载统计和最近记录<br>**全局安装后使用**: `pixivflow status` |
420
341
  | `logs` | 查看运行日志<br>**全局安装后使用**: `pixivflow logs` |
421
- | `config` | 配置管理工具(查看/编辑/备份/恢复)<br>**全局安装后使用**: `pixivflow config` |
422
- | `backup` | 自动备份配置和数据<br>**全局安装后使用**: `pixivflow backup` |
423
- | `maintain` | 自动维护(清理日志、优化数据库等)<br>**全局安装后使用**: `pixivflow maintain` |
424
- | `monitor` | 实时监控进程状态和性能指标<br>**全局安装后使用**: `pixivflow monitor` |
425
- | `setup` | 交互式配置向导(首次使用)<br>**全局安装后使用**: `pixivflow setup` |
342
+ | `config` | 配置管理工具(查看/编辑/备份/恢复)<br>**全局安装后使用**: `pixivflow config` |
343
+ | `backup` | 自动备份配置和数据<br>**全局安装后使用**: `pixivflow backup` |
344
+ | `maintain` | 自动维护(清理日志、优化数据库等)<br>**全局安装后使用**: `pixivflow maintain` |
345
+ | `monitor` | 实时监控进程状态和性能指标<br>**全局安装后使用**: `pixivflow monitor` |
346
+ | `setup` | 交互式配置向导(首次使用)<br>**全局安装后使用**: `pixivflow setup` |
426
347
 
427
- ### ⚙️ 其他工具
348
+ ### 其他工具
428
349
 
429
350
  ```bash
430
351
  # 环境检查和修复
@@ -445,165 +366,48 @@ PixivFlow 提供了丰富的脚本工具,所有脚本直接调用内置 CLI,
445
366
 
446
367
  | 文档 | 说明 |
447
368
  |------|------|
448
- | [QUICKSTART](docs/QUICKSTART.md) | **3 分钟快速上手** - 最快开始使用 |
449
- | [🔐 LOGIN](docs/LOGIN.md) | **登录流程详解** - 登录问题解决方案 |
450
- | [📖 USAGE](docs/USAGE.md) | **使用指南** - 功能使用说明 |
369
+ | [QUICKSTART](docs/QUICKSTART.md) | **3 分钟快速上手** - 最快开始使用 |
370
+ | [LOGIN](docs/LOGIN.md) | **登录流程详解** - 登录问题解决方案 |
371
+ | [USAGE](docs/USAGE.md) | **使用指南** - 功能使用说明 |
451
372
 
452
373
  ### 功能指南
453
374
 
454
375
  | 文档 | 说明 |
455
376
  |------|------|
456
- | [📋 CONFIG](docs/CONFIG.md) | **配置文件使用指南** - 所有配置选项详解 |
457
- | [🛠️ SCRIPTS](docs/SCRIPTS.md) | **脚本使用指南** - 所有脚本详细说明 |
377
+ | [CONFIG](docs/CONFIG.md) | **配置文件使用指南** - 所有配置选项详解 |
378
+ | [SCRIPTS](docs/SCRIPTS.md) | **脚本使用指南** - 所有脚本详细说明 |
458
379
 
459
380
  ### 部署和环境
460
381
 
461
382
  | 文档 | 说明 |
462
383
  |------|------|
463
- | [🐳 DOCKER](docs/DOCKER.md) | **Docker 使用指南** - Docker 部署和使用(包含常见问题解决方案) |
464
- | [📱 TERMUX](docs/TERMUX_INSTALL.md) | **Termux/Android 安装指南** - Android 设备上的安装和使用 |
384
+ | [DOCKER](docs/DOCKER.md) | **Docker 使用指南** - Docker 部署和使用(包含常见问题解决方案) |
385
+ | [TERMUX](docs/TERMUX_INSTALL.md) | **Termux/Android 安装指南** - Android 设备上的安装和使用 |
465
386
 
466
387
  ### 项目文档
467
388
 
468
389
  | 文档 | 说明 |
469
390
  |------|------|
470
- | [🏗️ ARCHITECTURE](docs/ARCHITECTURE.md) | **架构说明** - 项目架构和技术实现细节 |
471
- | [🔄 CLI_MIGRATION](docs/CLI_MIGRATION_SUMMARY.md) | **CLI 命令移植总结** - CLI 命令迁移和功能对照 |
472
- | [📝 CHANGELOG](docs/project/CHANGELOG.md) | 版本更新日志 |
473
- | [🤝 CONTRIBUTING](docs/project/CONTRIBUTING.md) | 贡献指南 |
391
+ | [ARCHITECTURE](docs/ARCHITECTURE.md) | **架构说明** - 项目架构和技术实现细节 |
392
+ | [CLI_MIGRATION](docs/CLI_MIGRATION_SUMMARY.md) | **CLI 命令移植总结** - CLI 命令迁移和功能对照 |
393
+ | [CHANGELOG](docs/project/CHANGELOG.md) | 版本更新日志 |
394
+ | [CONTRIBUTING](docs/project/CONTRIBUTING.md) | 贡献指南 |
474
395
 
475
396
  ---
476
397
 
477
398
  <a id="使用场景"></a>
478
399
  ## 使用场景
479
400
 
480
- <a id="场景-1每日自动收集灵感素材"></a>
481
- ### 场景 1:每日自动收集灵感素材
482
-
483
- **需求**:每天自动下载风景、插画类高质量作品作为设计素材
484
-
485
- **配置示例**:
486
-
487
- ```json
488
- {
489
- "targets": [
490
- {
491
- "type": "illustration",
492
- "tag": "風景",
493
- "limit": 50,
494
- "minBookmarks": 1000
495
- },
496
- {
497
- "type": "illustration",
498
- "tag": "イラスト",
499
- "limit": 30,
500
- "minBookmarks": 5000
501
- }
502
- ],
503
- "scheduler": {
504
- "enabled": true,
505
- "cron": "0 2 * * *"
506
- }
507
- }
508
- ```
509
-
510
- > 提示:支持 `tagRelation: "or"`。当为 `or` 时,会将 `tag` 按空格拆分,逐个标签顺序检索、合并并去重,然后按 `sort` 排序并按 `limit` 截断。建议在该模式下将 `download.requestDelay` 调高(例如 1500~3000ms)以降低速率限制。
511
-
512
- **示例 1b:多标签 OR 搜索(逐个标签检索并合并)**
513
- ```json
514
- {
515
- "targets": [
516
- {
517
- "type": "novel",
518
- "tag": "風景 イラスト オリジナル",
519
- "tagRelation": "or",
520
- "limit": 10,
521
- "mode": "search",
522
- "searchTarget": "partial_match_for_tags",
523
- "sort": "popular_desc"
524
- }
525
- ]
526
- }
527
- ```
528
-
529
- **运行方式**:
530
-
531
- ```bash
532
- ./scripts/pixiv.sh run
533
- ```
534
-
535
- ---
536
-
537
- <a id="场景-2服务器定时收集特定标签"></a>
538
- ### 场景 2:服务器定时收集特定标签
539
-
540
- **需求**:在服务器上每周收集特定标签的热门作品
541
-
542
- **配置示例**:
543
-
544
- ```json
545
- {
546
- "targets": [
547
- {
548
- "type": "illustration",
549
- "tag": "原神",
550
- "limit": 100,
551
- "searchTarget": "partial_match_for_tags"
552
- }
553
- ],
554
- "scheduler": {
555
- "enabled": true,
556
- "cron": "0 0 * * 0",
557
- "timezone": "Asia/Shanghai"
558
- }
559
- }
560
- ```
561
-
562
- **部署方式**:
563
-
564
- ```bash
565
- # 使用自动部署脚本
566
- ./scripts/auto-deploy.sh
567
-
568
- # 或使用 PM2 管理进程
569
- pm2 start "npm run scheduler" --name pixivflow
570
- ```
571
-
572
- ---
573
-
574
- <a id="场景-3快速体验-随机下载"></a>
575
- ### 场景 3:快速体验 - 随机下载
576
-
577
- **需求**:快速体验工具,下载一个随机作品
578
-
579
- ```bash
580
- # 随机下载插画(默认)
581
- npm run random
582
- # 或
583
- pixivflow random
584
-
585
- # 随机下载小说
586
- pixivflow random --novel
587
- ```
588
-
589
- **功能说明**:
590
- - 🎲 从热门标签中随机选择(插画:風景、イラスト等;小说:小説、オリジナル等)
591
- - 🔍 从搜索结果中随机选择作品
592
- - 🔐 自动登录(如未登录)
593
- - 📥 快速体验:下载 1 个随机作品
401
+ ### 常见使用方式
594
402
 
595
- ---
596
-
597
- <a id="场景-4一次性批量下载"></a>
598
- ### 场景 4:一次性批量下载
599
-
600
- **需求**:一次性下载指定标签的作品
601
-
602
- ```bash
603
- ./scripts/pixiv.sh once # 或 npm run download
604
- ```
403
+ | 场景 | 命令 | 说明 |
404
+ |------|------|------|
405
+ | **快速体验** | `pixivflow random` | 随机下载热门作品,快速上手 |
406
+ | **一次性下载** | `pixivflow download` | 按配置文件执行一次下载 |
407
+ | **定时自动化** | `pixivflow scheduler` | 启动定时任务,自动化收集 |
408
+ | **URL 下载** | `pixivflow download --url <url>` | 直接下载指定作品或用户 |
605
409
 
606
- > 💡 **提示**:所有下载任务通过配置文件实现,无需修改源代码。详细说明请查看 [配置文件使用指南](docs/CONFIG.md)
410
+ > 💡 **详细配置示例**:查看 [配置文件使用指南](docs/CONFIG.md) 了解各种使用场景的完整配置方法
607
411
 
608
412
  ---
609
413
 
@@ -611,355 +415,73 @@ pixivflow random --novel
611
415
  <a id="核心配置"></a>
612
416
  ## 核心配置
613
417
 
614
- 配置文件位于 `config/standalone.config.json`。以下是关键配置项说明:
615
-
616
- <a id="认证配置"></a>
617
- ### 认证配置
618
-
619
- ```json
620
- {
621
- "pixiv": {
622
- "refreshToken": "your_refresh_token_here",
623
- "clientId": "MOBrBDS8blbauoSck0ZfDbtuzpyT",
624
- "clientSecret": "lsACyCD94FhDUtGTXi3QzcFE2uU1hqtDaKeqrdwj",
625
- "deviceToken": "pixiv",
626
- "userAgent": "PixivAndroidApp/5.0.234 (Android 11; Pixel 6)"
627
- }
628
- }
629
- ```
630
-
631
- > ⚠️ `refreshToken` 通过配置向导自动获取,无需手动填写
632
- > ⚠️ `deviceToken` 默认值为 `"pixiv"`,通常不需要修改
418
+ ### 快速配置
633
419
 
634
- <a id="下载目标"></a>
635
- ### 下载目标
636
-
637
- #### 基础配置
420
+ ```bash
421
+ # 首次使用 - 交互式配置向导
422
+ pixivflow setup
638
423
 
639
- ```json
640
- {
641
- "targets": [
642
- {
643
- "type": "illustration", // illustration 或 novel
644
- "tag": "風景", // 搜索标签(支持多标签,空格分隔)
645
- "limit": 20, // 下载数量限制
646
- "mode": "search" // search(搜索)或 ranking(排行榜)
647
- }
648
- ]
649
- }
424
+ # 或手动编辑配置文件
425
+ pixivflow config edit
650
426
  ```
651
427
 
652
- #### 常用配置选项
653
-
654
- | 选项 | 说明 | 示例 |
655
- |------|------|------|
656
- | `type` | 内容类型 | `"illustration"` 或 `"novel"` |
657
- | `tag` | 搜索标签(支持多标签,空格分隔) | `"原神"` 或 `"明日方舟 アークナイツ"` |
658
- | `limit` | 下载数量限制 | `20` |
659
- | `mode` | 下载模式 | `"search"` 或 `"ranking"` |
660
- | `searchTarget` | 搜索范围 | `"partial_match_for_tags"`(部分匹配)<br>`"exact_match_for_tags"`(精确匹配) |
661
- | `sort` | 排序方式 | `"date_desc"`(最新)<br>`"popular_desc"`(最受欢迎)<br>`"date_asc"`(最旧) |
662
- | `minBookmarks` | 最低收藏数 | `500` |
663
- | `startDate` / `endDate` | 日期范围 | `"2024-01-01"` |
664
- | `random` | 随机选择 | `true` |
665
- | `seriesId` | 小说系列ID | `14690617`(仅 novel) |
666
- | `novelId` | 单篇小说ID | `26132156`(仅 novel) |
667
- | `languageFilter` | 语言过滤 | `"chinese"`(仅中文)<br>`"non-chinese"`(仅非中文) |
668
- | `detectLanguage` | 启用语言检测 | `true`(默认)或 `false`(仅 novel) |
669
-
670
- #### 配置示例
671
-
672
- **基础示例:按标签下载插画**
673
- ```json
674
- {
675
- "targets": [
676
- {
677
- "type": "illustration",
678
- "tag": "風景",
679
- "limit": 20,
680
- "mode": "search"
681
- }
682
- ]
683
- }
684
- ```
428
+ ### 基本配置结构
685
429
 
686
- **进阶示例:按收藏数筛选热门作品**
687
430
  ```json
688
431
  {
689
432
  "targets": [
690
433
  {
691
- "type": "illustration",
692
- "tag": "風景",
693
- "limit": 50,
694
- "mode": "search",
695
- "minBookmarks": 1000,
696
- "sort": "popular_desc"
434
+ "type": "illustration", // 内容类型:illustration 或 novel
435
+ "tag": "風景", // 搜索标签
436
+ "limit": 20, // 下载数量
437
+ "minBookmarks": 500 // 最低收藏数(可选)
697
438
  }
698
- ]
699
- }
700
- ```
701
-
702
- > 💡 **提示**:
703
- > - 在 `tag` 字段中用空格分隔多个标签,表示作品必须同时包含所有标签(AND关系)
704
- > - 使用 `tagRelation: "or"` 可以实现标签并集(任意一个标签即可)
705
- > - `languageFilter` 仅对小说生效,支持 `"chinese"` 或 `"non-chinese"`
706
- > - 📚 **更多配置示例**:查看 [配置文件使用指南](docs/CONFIG.md) 了解所有配置选项和详细示例(多标签搜索、排行榜下载、小说系列下载、语言过滤等)
707
-
708
- > 💡 **日期占位符**:支持 `YESTERDAY`、`TODAY`、`LAST_7_DAYS`、`LAST_30_DAYS` 等,可用于 `startDate`、`endDate`、`rankingDate`
709
- > 📚 **完整配置说明**:查看 [配置指南](docs/CONFIG.md) 了解所有配置选项、占位符和高级用法
710
-
711
- <a id="定时任务"></a>
712
- ### 定时任务
713
-
714
- ```json
715
- {
439
+ ],
716
440
  "scheduler": {
717
- "enabled": true,
718
- "cron": "0 3 * * *", // Cron 表达式
719
- "timezone": "Asia/Shanghai" // 时区
720
- }
721
- }
722
- ```
723
-
724
- **Cron 表达式速查**:
725
- - `0 * * * *` - 每小时执行
726
- - `0 */6 * * *` - 每 6 小时执行
727
- - `0 2 * * *` - 每天 2:00 执行
728
- - `0 0 * * 0` - 每周日 0:00 执行
729
- - `0 0 1 * *` - 每月 1 号 0:00 执行
730
-
731
- <a id="存储配置"></a>
732
- ### 存储配置
733
-
734
- ```json
735
- {
736
- "storage": {
737
- "databasePath": "./data/pixiv-downloader.db",
738
- "downloadDirectory": "./downloads",
739
- "illustrationDirectory": "./downloads/illustrations",
740
- "novelDirectory": "./downloads/novels",
741
- "illustrationOrganization": "byAuthorAndTag",
742
- "novelOrganization": "byDateAndAuthor"
441
+ "enabled": true, // 启用定时任务
442
+ "cron": "0 2 * * *" // 每天 2:00 执行
743
443
  }
744
444
  }
745
445
  ```
746
446
 
747
- **目录组织方式**:
748
- - `flat` - 扁平结构(默认)
749
- - `byAuthor` - 按作者组织
750
- - `byTag` - 按标签组织
751
- - `byDate` - 按日期组织(YYYY-MM)
752
- - `byDay` - 按日组织(YYYY-MM-DD)
753
- - `byAuthorAndTag` - 按作者和标签
754
- - `byDateAndAuthor` - 按日期和作者
755
- - `byDayAndAuthor` - 按日和作者
756
-
757
- > 💡 **提示**:路径支持自动修复,项目启动时会自动检测并修复路径问题。使用 `pixivflow migrate-config` 可手动迁移配置路径。
758
- > 📚 **完整配置说明**:查看 [配置指南](docs/CONFIG.md)
759
-
760
- ---
761
-
762
- ## ✅ 最佳实践
763
-
764
- - **明确配置路径**
765
- - 优先使用 `--config <绝对路径>`,或设置环境变量 `PIXIV_DOWNLOADER_CONFIG`。
766
- - **排行榜 + 标签的替代方案**
767
- - 若想“按标签抓取热门”,优先用 `mode: "search"` + `sort: "popular_desc"`,通常比“ranking + filterTag”更高效、可控。
768
- - **多标签组合**
769
- - `tagRelation: "and"`(默认,必须同时包含所有标签)
770
- - `tagRelation: "or"`(任意一个标签即可,结果会合并去重)
771
- - **时间与时区**
772
- - 定时任务指定 `timezone`(如 `Asia/Shanghai`),避免跨时区偏差。
773
- - **登录与凭据**
774
- - 使用 `pixivflow login --config <path>` 写入 `refreshToken`,勿手动粘贴到仓库。
775
- - **运行前检查**
776
- - 执行 `pixivflow health` 或 `pixivflow config validate`,提前发现配置或网络问题。
777
- - **数据与备份**
778
- - 关注 `storage.databasePath` 与下载目录,定期备份或使用 `pixivflow backup`。
779
-
780
- ---
781
-
782
- ## 🐛 常见问题
783
-
784
- ### ❓ 登录失败?
785
-
786
- ```bash
787
- # 重新登录
788
- npm run login
789
- # 或
790
- ./scripts/pixiv.sh login
791
- ```
792
-
793
- **检查项**:确认用户名密码正确、网络连接正常、代理设置正确
794
-
795
- ---
796
-
797
- ### ❓ 认证失败或 Token 过期?
798
-
799
- ```bash
800
- npm run login # 重新登录获取新 token
801
- ```
802
-
803
- ---
804
-
805
- ### ❓ 找不到匹配的作品?
806
-
807
- **可能原因**:标签拼写错误、筛选条件过严、网络问题
808
-
809
- **解决方法**:
810
- 1. 尝试常见标签:`イラスト`、`風景`、`art`
811
- 2. 降低 `minBookmarks` 值
812
- 3. 检查网络和代理设置
813
- 4. 使用 `partial_match_for_tags` 搜索模式,提高匹配率
814
-
815
- ---
816
-
817
- ### ❓ 下载速度慢或经常失败?
818
-
819
- **解决方法**:
820
- 1. 调整配置:减少 `download.concurrency`(1-2),增加 `download.requestDelay`(1000-2000ms)
821
- 2. 保持 `download.dynamicConcurrency: true`(默认启用),系统会自动调整并发数
822
- 3. 检查网络连接,必要时使用代理
823
-
824
- > 💡 **提示**:内置智能动态并发控制,检测到速率限制(429 错误)时自动降低并发数
447
+ > 📚 **完整配置说明**:查看 [配置文件使用指南](docs/CONFIG.md) 了解所有配置选项和详细示例
825
448
 
826
449
  ---
827
450
 
828
- ### ❓ 定时任务没有运行?
829
-
830
- ```bash
831
- pixivflow status # 查看状态
832
- pixivflow logs # 查看日志
833
- ```
834
-
835
- **确保程序持续运行**:
836
- ```bash
837
- pm2 start "pixivflow scheduler" --name pixivflow
838
- pm2 save && pm2 startup
839
- ```
840
-
841
- ---
451
+ ## 使用建议
842
452
 
843
- > 📖 **更多问题**:查看 [使用指南](docs/USAGE.md) 了解其他常见问题和解决方案(日期过滤、多标签搜索、Android 安装等)
453
+ - 首次使用运行 `pixivflow setup` 进行配置
454
+ - 使用 `pixivflow health` 检查配置和网络状态
455
+ - 定期使用 `pixivflow backup` 备份数据
844
456
 
845
457
  ---
846
458
 
847
- ## 🔒 安全提示
848
-
849
- > ⚠️ **重要**:配置文件包含敏感信息,请务必注意安全
850
-
851
- ### 🛡️ 安全建议
852
-
853
- | 建议 | 说明 |
854
- |------|------|
855
- | ✅ **不要分享配置文件** | `config/standalone.config.json` 包含敏感认证信息 |
856
- | ✅ **不要提交到 Git** | 确保配置文件在 `.gitignore` 中(已默认排除) |
857
- | ✅ **定期备份** | 使用 `pixivflow backup` 备份配置和数据 |
858
- | ✅ **使用强密码** | 保护你的 Pixiv 账号 |
859
- | ✅ **HTTPS 加密** | 所有 API 请求均通过 HTTPS 安全传输 |
860
- | ✅ **定期更新 Token** | 定期重新运行配置向导更新认证信息 |
459
+ ## 🐛 常见问题
861
460
 
862
- ### 🔐 关于 refresh_token
461
+ 遇到问题?试试这些快速解决方案:
863
462
 
864
- `refresh_token` 等同于你的账号密码,拥有它即可访问你的 Pixiv 账户。
463
+ | 问题 | 解决方法 |
464
+ |------|----------|
465
+ | **登录失败** | `pixivflow login` 重新登录 |
466
+ | **找不到作品** | 检查标签拼写,降低 `minBookmarks` 值 |
467
+ | **下载失败** | `pixivflow health` 检查网络和配置 |
468
+ | **定时任务异常** | `pixivflow status` 查看运行状态 |
865
469
 
866
- **如果 refresh_token 泄露:**
867
- 1. 立即在 Pixiv 账户设置中撤销授权
868
- 2. 修改 Pixiv 账户密码
869
- 3. 重新运行配置向导获取新的 token
470
+ > 📖 **详细故障排除**:查看 [使用指南](docs/USAGE.md) 了解完整的问题解决方案
870
471
 
871
472
  ---
872
473
 
873
- ## 📊 下载记录管理
874
-
875
- 所有下载记录保存在 SQLite 数据库中(`data/pixiv-downloader.db`),包括:
876
-
877
- - 作品 ID、标题、作者信息
878
- - 下载时间、文件路径
879
- - 作品统计(浏览量、收藏数等)
880
-
881
- ### 查看下载记录
882
-
883
- ```bash
884
- # 使用 SQLite 命令行工具
885
- sqlite3 data/pixiv-downloader.db "SELECT * FROM downloaded_artworks LIMIT 10;"
886
-
887
- # 或使用图形界面工具
888
- # - DB Browser for SQLite
889
- # - SQLiteStudio
890
- ```
891
-
892
- ### 清理下载记录
893
-
894
- ```bash
895
- # 使用维护命令(推荐)
896
- pixivflow maintain
474
+ ## 安全提示
897
475
 
898
- # 或手动删除数据库(会重新下载所有作品)
899
- rm data/pixiv-downloader.db
900
- ```
476
+ ⚠️ **重要**:配置文件包含敏感的认证信息,请勿分享或提交到代码仓库。如需帮助,请删除敏感信息后再分享配置内容。
901
477
 
902
478
  ---
903
479
 
904
- ## 🚀 进阶使用
905
-
906
- ### 服务器部署
907
-
908
- **方式 1:Docker(推荐)**
909
- ```bash
910
- ./scripts/pixiv.sh docker deploy
911
- ```
912
-
913
- **方式 2:PM2**
914
- ```bash
915
- npm install -g pm2
916
- pm2 start "npm run scheduler" --name pixivflow
917
- pm2 save && pm2 startup
918
- ```
919
-
920
- **方式 3:systemd**
921
- 创建 `/etc/systemd/system/pixivflow.service`,配置后启动:
922
- ```bash
923
- sudo systemctl enable pixivflow && sudo systemctl start pixivflow
924
- ```
925
-
926
- ### 配置多个下载任务
927
-
928
- 在 `targets` 数组中添加多个目标:
929
-
930
- ```json
931
- {
932
- "targets": [
933
- { "type": "illustration", "tag": "風景", "limit": 50 },
934
- { "type": "illustration", "tag": "イラスト", "limit": 30, "minBookmarks": 1000 },
935
- { "type": "novel", "tag": "小説", "limit": 10 }
936
- ]
937
- }
938
- ```
939
-
940
- ### 使用代理
941
-
942
- **方式 1:环境变量(推荐)**
943
- ```bash
944
- export all_proxy=socks5://127.0.0.1:6153
945
- npm run download
946
- ```
480
+ ## 进阶使用
947
481
 
948
- **方式 2:配置文件**
949
- ```json
950
- {
951
- "network": {
952
- "proxy": {
953
- "enabled": true,
954
- "host": "127.0.0.1",
955
- "port": 7890,
956
- "protocol": "http"
957
- }
958
- }
959
- }
960
- ```
482
+ 需要服务器部署、代理配置、多任务管理等高级功能?
961
483
 
962
- > 💡 **提示**:环境变量优先级:`all_proxy` > `https_proxy` > `http_proxy`
484
+ > 📖 **完整指南**:查看 [使用指南](docs/USAGE.md) [Docker 部署指南](docs/DOCKER.md) 了解详细的进阶使用方法
963
485
 
964
486
  ---
965
487