# 夸克自动转存
本项目是在 [Cp0204/quark-auto-save:0.5.3.1](https://github.com/Cp0204/quark-auto-save) 的基础上修改而来的（感谢 [Cp0204](https://github.com/Cp0204)），我对整个 WebUI 进行了重塑，增加了更多实用功能，新增功能的代码都是通过 AI 完成的，不保证功能的稳定性。主要的新增功能如下（[详见](https://github.com/x1ao4/quark-auto-save-x/wiki)）：

- **过滤项目**：通过在 `过滤规则` 里设置过滤词来过滤不需要转存的文件或文件夹。支持高级过滤功能，使用保留词和过滤词可实现复杂的过滤逻辑。
- **顺序命名**：通过使用包含 `{}` 的表达式（如 `乘风2025 - S06E{}`）自动切换为 `顺序命名` 模式，该模式将通过文件名与上传时间等信息对文件进行智能排序，然后按顺序对每个文件的 `{}` 赋予序号，实现顺序命名。
- **剧集命名**：通过使用包含 `[]` 的表达式（如 `黑镜 - S06E[]`）自动切换为 `剧集命名` 模式，该模式将从原始文件名中提取剧集编号，然后把提取的编号代入对应文件名的 `[]` 中，实现自动按剧集编号命名。
- **自动切换命名模式**：默认的命名模式依然为 `正则命名` 模式，现在会通过用户输入的 `匹配表达式` 自动实时判断和切换对应的模式。
- **自定义集编号识别规则**：支持在系统配置页面编辑用于提取剧集编号的 `集编号识别规则` 表达式，扩展识别范围。
- **数据库**：引入 SQLite 数据库，记录和管理所有转存历史，便于查询和追踪。
- **转存记录**：支持通过 WebUI 的转存记录页面查看、查询历史转存记录的相关信息，支持删除转存记录。
- **WebUI**：对整个 WebUI 进行了重塑，增加了更多实用功能，如文件选择和预览界面的排序功能、资源搜索的过滤功能、TMDB 和豆瓣搜索功能、页面视图切换功能、账号设置功能等等。
- **查重逻辑**：支持优先通过历史转存记录查重，对于有转存记录的文件，即使删除网盘文件，也不会重复转存。
- **Aria2**：支持成功添加 Aria2 下载任务后自动删除夸克网盘内对应的文件，清理网盘空间。
- **文件整理**：支持浏览和管理多个夸克账号的网盘文件，支持单项/批量重命名（支持应用完整的命名、过滤规则和撤销重命名等操作）、移动文件、删除文件、新建文件夹等操作。
- **更新状态**：支持在任务列表页面显示任务的最近更新日期、最近转存文件，支持在任务列表、转存记录、文件整理页面显示当日更新标识（对于当日更新的内容）。
- **影视发现**：支持在影视发现页面浏览豆瓣热门影视榜单，一键快速创建任务，智能填充任务配置，实现便捷订阅。
- **任务筛选**：支持在任务列表页面按照任务类型（如剧集、动画、综艺等）筛选任务，在对应的筛选视图下创建任务将会自动继承同类任务的基础配置，便于自动填充任务配置。
- **任务排序**：支持在任务列表页面按照任务编号、任务名称、任务进度和更新时间进行排序，支持升序和降序排列。
- **任务视图**：支持在任务列表页面使用列表视图和海报视图两种视图浏览和管理任务，海报视图将通过 TMDB 与任务对应的电视节目进行匹配，并显示对应的节目海报。
- **任务匹配**：在配置了 TMDB API 密钥后，所有任务将自动通过 TMDB 进行元数据匹配，匹配后将获取电视节目的海报和元数据，丰富任务相关信息的展示，包括集数信息统计、当前任务进度和电视节目状态等。
- **追剧日历**：支持在追剧日历页面查看和浏览任务对应电视节目的信息和播出时间表，追踪电视节目的播出情况，了解任务的完成进度。追剧日历支持海报视图和日历视图两种视图，可方便快捷的了解订阅内容的实时状态。
- **字幕命名规则**：支持在全局设置字幕文件的语言代码后缀，在重命名字幕文件时自动添加语言代码后缀，如 `.zh.srt`、`.zh.ass` 等。

本项目修改后的版本为个人需求定制版，目的是满足我自己的使用需求，某些（我不用的）功能可能会因为修改而出现 BUG，不一定会被修复。若你要使用本项目，请知晓本人不是程序员，我无法保证本项目的稳定性，如果你在使用过程中发现了 BUG，可以在 Issues 中提交，但不保证每个 BUG 都能被修复，请谨慎使用，风险自担。

你可以凭借<a href="#赞赏">赞赏</a>（金额不限）截图加入夸克自动转存（QASX）的微信交流群（我的微信 x1ao-4，备注 QASX），讨论与 QASX 相关的话题，领取与夸克网盘相关的福利。但请注意，这不代表你会获得一对一的咨询服务，我只是提供一个交流场地，当然如果时间和精力允许，我也会在群内解答一些能力范围内的问题。

夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙。对于一些持续更新的资源，隔段时间去转存十分麻烦。定期执行本脚本自动转存、重命名整理，配合 Alist、rclone、Emby、Plex 可达到自动追更的效果。🥳

注意！资源不会每时每刻更新，**严禁设置过高的定时运行频率！**
以免账号风控或者给夸克服务器造成不必要的压力。

## 功能
- 部署方式
  - [x] 支持 Docker 部署，WebUI 配置
  - [x] 可能兼容青龙

- 分享链接
  - [x] 支持分享链接的子目录
  - [x] 记录失效分享并跳过任务
  - [x] 支持需提取码的分享链接 <sup>[?](https://github.com/x1ao4/quark-auto-save-x/wiki/使用技巧集锦#支持需提取码的分享链接)</sup>
  - [x] 智能搜索资源并自动填充（**支持自动过滤失效链接**） <sup>[?](https://github.com/x1ao4/quark-auto-save-x/wiki/资源搜索)</sup>

- 文件管理
  - [x] 目标目录不存在时自动新建
  - [x] 跳过已转存过的文件（**即使删除网盘文件，也不会重复转存**）
  - [x] **过滤不需要转存的文件或文件夹**
  - [x] 转存后文件名整理（正则命名、**顺序命名**、**剧集命名**）
  - [x] 可选忽略文件后缀
  - [x] **数据库记录所有转存历史（支持查看、查询和删除记录）**
  - [x] **文件整理（支持浏览和管理多个夸克账号的网盘文件）**

- 任务管理
  - [x] 支持多组任务
  - [x] 任务结束期限，期限后不执行此任务
  - [x] 可单独指定子任务星期几执行
  - [x] **支持通过任务名称跳转 TMDB、豆瓣相关页面**
  - [x] **支持通过影视发现页面浏览豆瓣热门影视榜单、快速创建任务（支持智能填充任务配置）**

- 媒体库整合
  - [x] 根据任务名搜索 Emby 媒体库
  - [x] 追更或整理后自动刷新 Emby、Plex 媒体库
  - [x] 媒体库模块化，用户可很方便地[开发自己的媒体库hook模块](./plugins)

- 其它
  - [x] 每日签到领空间 <sup>[?](https://github.com/x1ao4/quark-auto-save-x/wiki/使用技巧集锦#每日签到领空间)</sup>
  - [x] 支持多个通知推送渠道 <sup>[?](https://github.com/x1ao4/quark-auto-save-x/wiki/通知设置)</sup>
  - [x] 支持多账号（多账号签到、**文件管理**，仅首账号转存）
  - [x] 支持网盘文件下载、strm 文件生成等功能 <sup>[?](https://github.com/x1ao4/quark-auto-save-x/wiki/插件设置)</sup>
  - [x] **支持通过追剧日历功能了解订阅内容的播出情况**

## 部署
### Docker 部署

Docker Run

```shell
docker run -d \
  --name quark-auto-save-x \
  -p 5005:5005 \
  -v /自定义配置文件的存储目录/quark-auto-save-x/config:/app/config \
  -v /自定义生成文件的存储目录:/media \  # 可选，插件 alist_strm_gen 生成 strm 使用
  --restart unless-stopped \
  x1ao4/quark-auto-save-x:latest
```

Docker Compose（推荐）

```yaml
services:
  quark-auto-save-x:
    image: x1ao4/quark-auto-save-x:latest
    container_name: quark-auto-save-x
    ports:
      - 5005:5005
    volumes:
      - /自定义配置文件的存储目录/quark-auto-save-x/config:/app/config
      - /自定义生成文件的存储目录:/media  # 可选，插件 alist_strm_gen 生成 strm 使用
    restart: unless-stopped
```

默认管理地址：http://yourhost:5005

默认管理用户名/密码：admin

| 环境变量         | 说明     |
| ---------------- | -------- |
| `WEBUI_USERNAME` | 用户名 |
| `WEBUI_PASSWORD` | 密码 |
| `PLUGIN_FLAGS`   | 插件标志，如使用 `-emby,-aria2` 来禁用某些插件 |
| `PORT` | 端口，Host 模式可使用此变量更换端口 |

### 青龙部署
程序也支持以青龙定时任务的方式运行，但该方式无法使用 WebUI 管理任务，需手动修改配置文件。

青龙部署说明已转移到 Wiki ：[青龙部署教程](https://github.com/x1ao4/quark-auto-save-x/wiki/部署教程#青龙部署)

## 使用说明
### 正则整理示例

| 匹配表达式                                | 替换表达式                | 效果                                                                   |
| -------------------------------------- | ---------------------- | ---------------------------------------------------------------------- |
| `.*`                                   |                        | 无脑转存所有文件，不整理                                               |
| `\.mp4$`                               |                        | 转存所有 `.mp4` 后缀的文件                                             |
| `^【电影TT】花好月圆(\d+)\.(mp4\|mkv)` | `\1.\2`                | 【电影TT】花好月圆01.mp4 → 01.mp4<br>【电影TT】花好月圆02.mkv → 02.mkv |
| `^(\d+)\.mp4`                          | `S02E\1.mp4`           | 01.mp4 → S02E01.mp4<br>02.mp4 → S02E02.mp4                             |
| `$TV`                                  |                        | “魔法匹配”剧集文件                                                     |
| `^(\d+)\.mp4`                          | `$TASKNAME.S02E\1.mp4` | 01.mp4 → 任务名.S02E01.mp4                                             |
| `(\d{4})(-?)(\d{2})(-?)(\d{2})(期?)`    | `你好，星期六 - \1-\3-\5`| 2025-04-05.mp4 → 你好，星期六 - 2025-04-05.mp4<br>20250412期.mp4 → 你好，星期六 - 2025-04-12.mp4|
| `乘风2025 - S06E{}`                     |                        | 按照文件顺序命名，`{}` 会被代入序号，新增项目序号在已存在的最大序号的基础上递增  |
| `黑镜 - S07E[]`                         |                        | 自动识别文件名中的集编号，`[]` 会被代入从文件名中自动提取的集编号               |

更多正则使用说明：[命名规则](https://github.com/x1ao4/quark-auto-save-x/wiki/命名规则)

### 刷新媒体库
在有新转存时，可触发完成相应功能，如自动刷新媒体库、生成 .strm 文件等。配置指南：[插件设置](https://github.com/x1ao4/quark-auto-save-x/wiki/插件设置)

媒体库模块以插件的方式的集成，如果你有兴趣请参考[插件开发指南](https://github.com/x1ao4/quark-auto-save-x/tree/x/plugins)。

### 更多使用技巧
请参考 Wiki ：[使用技巧集锦](https://github.com/x1ao4/quark-auto-save-x/wiki/使用技巧集锦)

## 声明
本程序为个人兴趣开发，开源仅供学习与交流使用。
程序没有任何破解行为，只是对于夸克已有的 API 进行封装，所有数据来自于夸克官方 API，本人不对网盘内容负责、不对夸克官方 API 未来可能的改动导致的后果负责。

## 赞赏 <a name="赞赏"></a>
如果你觉得这个项目对你有用，可以考虑请我喝杯咖啡或者给我一个⭐️。谢谢你的支持！

<img width="383" alt="赞赏" src="https://github.com/user-attachments/assets/bdd2226b-6282-439d-be92-5311b6e9d29c">
