Compare commits

..

No commits in common. "4e898245f61d55a9236aa8e5ba3ecf1e3a093793" and "357c59eb55c5cd66a7dada13be22e2a258593fdf" have entirely different histories.

2 changed files with 34 additions and 22 deletions

View File

@ -64,7 +64,7 @@
- [x] 支持多个通知推送渠道 <sup>[?](https://github.com/Cp0204/quark-auto-save/wiki/%E9%80%9A%E7%9F%A5%E6%8E%A8%E9%80%81%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE)</sup> - [x] 支持多个通知推送渠道 <sup>[?](https://github.com/Cp0204/quark-auto-save/wiki/%E9%80%9A%E7%9F%A5%E6%8E%A8%E9%80%81%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE)</sup>
- [x] 支持多账号(多账号签到,仅首账号转存) - [x] 支持多账号(多账号签到,仅首账号转存)
## 部署 ## 使用
### Docker 部署 ### Docker 部署
@ -78,6 +78,7 @@ docker run -d \
-e WEBUI_PASSWORD=admin123 \ -e WEBUI_PASSWORD=admin123 \
-v ./quark-auto-save/config:/app/config \ -v ./quark-auto-save/config:/app/config \
-v ./quark-auto-save/media:/media \ # 可选模块alist_strm_gen生成strm使用 -v ./quark-auto-save/media:/media \ # 可选模块alist_strm_gen生成strm使用
-v /etc/localtime:/etc/localtime \ # 可选,同步宿主机时区
--network bridge \ --network bridge \
--restart unless-stopped \ --restart unless-stopped \
cp0204/quark-auto-save:latest cp0204/quark-auto-save:latest
@ -102,6 +103,7 @@ services:
volumes: volumes:
- ./quark-auto-save/config:/app/config - ./quark-auto-save/config:/app/config
- ./quark-auto-save/media:/media - ./quark-auto-save/media:/media
- /etc/localtime:/etc/localtime
``` ```
管理地址http://yourhost:5005 管理地址http://yourhost:5005
@ -130,9 +132,7 @@ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtow
程序也支持以青龙定时任务的方式运行,但该方式无法使用 WebUI 管理任务,需手动修改配置文件。 程序也支持以青龙定时任务的方式运行,但该方式无法使用 WebUI 管理任务,需手动修改配置文件。
青龙部署说明已转移到 Wiki [青龙部署教程](https://github.com/Cp0204/quark-auto-save/wiki/部署教程#青龙部署) 青龙部署说明已转移到 Wiki [青龙部署教程](https://github.com/Cp0204/quark-auto-save/wiki/青龙部署教程)
## 使用说明
### 正则整理示例 ### 正则整理示例
@ -140,33 +140,45 @@ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtow
| -------------------------------------- | ------------ | ---------------------------------------------------------------------- | | -------------------------------------- | ------------ | ---------------------------------------------------------------------- |
| `.*` | | 无脑转存所有文件,不整理 | | `.*` | | 无脑转存所有文件,不整理 |
| `\.mp4$` | | 转存所有 `.mp4` 后缀的文件 | | `\.mp4$` | | 转存所有 `.mp4` 后缀的文件 |
| `^【电影TT】花好月圆(\d+)\.(mp4\|mkv)` | `\1.\2` | 【电影TT】花好月圆01.mp4 → 01.mp4<br>【电影TT】花好月圆02.mkv → 02.mkv | | `^【电影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 | | `^(\d+)\.mp4` | `S02E\1.mp4` | 01.mp4 → S02E01.mp4<br>02.mp4 → S02E02.mp4 |
| `$TV` | | [魔法匹配](#魔法匹配)剧集文件 | | `$TV` | | [魔法匹配](#魔法匹配)剧集文件 |
| `^(\d+)\.mp4` | `$TASKNAME.S02E\1.mp4` | 01.mp4 → 任务名.S02E01.mp4 | | `^(\d+)\.mp4` | `$TASKNAME.S02E\1.mp4` | 01.mp4 → 任务名.S02E01.mp4 |
> [!TIP] 更多正则使用说明已转移到 Wiki [正则处理教程](https://github.com/Cp0204/quark-auto-save/wiki/正则处理教程)
>
> **魔法匹配**:当任务 `pattern` 值为 `$开头``replace` 留空时,实际将调用程序预设的正则表达式。
>
> 如 `$TV` 可适配和自动整理市面上90%分享剧集的文件名格式,具体实现见代码,欢迎贡献规则。
更多正则使用说明:[正则处理教程](https://github.com/Cp0204/quark-auto-save/wiki/正则处理教程) ### 媒体库配置
### 刷新媒体库 媒体库模块主要在执行任务,有新转存时触发完成相应功能,如刷新媒体库、生成 .strm 文件等。
在有新转存时,可触发完成相应功能,如自动刷新媒体库、生成 .strm 文件等。配置指南:[媒体库模块配置](https://github.com/Cp0204/quark-auto-save/wiki/媒体库模块配置) 媒体库目前已完成模块化,可以很方便地挂载集成,如果你有兴趣请参考[媒体库模块开发指南](https://github.com/Cp0204/quark-auto-save/tree/main/media_servers)。
媒体库模块以模块化方式的集成,如果你有兴趣请参考[媒体库模块开发指南](https://github.com/Cp0204/quark-auto-save/tree/main/media_servers)。 目前已完成的模块配置参考 Wiki [媒体库模块配置教程](https://github.com/Cp0204/quark-auto-save/wiki/媒体库模块配置教程)
### 更多使用技巧 ### 特殊场景使用技巧
请参考 Wiki [使用技巧集锦](https://github.com/Cp0204/quark-auto-save/wiki/使用技巧集锦) #### 忽略后缀
- 当目录已存*01.mp4、02.mp4*,新的源又有*01.mkv、02.mkv、03.mkv*,只希望获得*03.mkv*更新时。
- 一个部剧同时追更两个源,看谁更新快🤪,但两个源的视频格式不一时。
#### 自动刷新媒体库
同时配置 `emby.url` `emby.apikey` 和任务的 `emby_id` ,将在新存或整理后自动刷新 Emby 媒体库、刷新元数据。
#### 魔法匹配
当任务 `pattern` 值为 `$开头``replace` 留空时,实际将调用程序预设的正则表达式。
`$TV` 可适配和自动整理市面上90%分享剧集的文件名格式,具体实现见代码,欢迎贡献规则。
## 打赏 ## 打赏
如果这个项目让你受益你可以打赏我1块钱让我知道开源有价值。谢谢 如果这个项目让你受益你可以打赏我1块钱让我知道开源有价值。谢谢
*由于微信限制,无法反向联系付款人,感谢您的支持!* 😉
![WeChatPay](https://cdn.jsdelivr.net/gh/Cp0204/Cp0204@main/img/wechat_pay_qrcode.png) ![WeChatPay](https://cdn.jsdelivr.net/gh/Cp0204/Cp0204@main/img/wechat_pay_qrcode.png)
## 声明 ## 声明

View File

@ -60,7 +60,7 @@
<div class="col"> <div class="col">
<h2 style="display: inline-block;">通知</h2> <h2 style="display: inline-block;">通知</h2>
<span class="badge badge-pill badge-light"> <span class="badge badge-pill badge-light">
<a href="https://github.com/Cp0204/quark-auto-save/wiki/通知推送服务配置" target="_blank" title="通知推送服务配置">?</a> <a href="https://github.com/Cp0204/quark-auto-save/wiki/%E9%80%9A%E7%9F%A5%E6%8E%A8%E9%80%81%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE" target="_blank" title="通知配置说明">?</a>
</span> </span>
</div> </div>
<div class="col text-right"> <div class="col text-right">
@ -84,7 +84,7 @@
<div class="col"> <div class="col">
<h2 style="display: inline-block;">媒体库</h2> <h2 style="display: inline-block;">媒体库</h2>
<span class="badge badge-pill badge-light"> <span class="badge badge-pill badge-light">
<a href="https://github.com/Cp0204/quark-auto-save/wiki/媒体库模块配置" target="_blank" title="媒体库模块配置">?</a> <a href="https://github.com/Cp0204/quark-auto-save/tree/main/media_servers" target="_blank" title="媒体库模块开发指南">?</a>
</span> </span>
</div> </div>
</div> </div>
@ -227,7 +227,7 @@
</div> </div>
</div> </div>
<datalist id="magicRegex"> <datalist id="magicRegex">
<option v-for="(value, key) in formData.magic_regex" :key="key" :value="`${key}`" v-html="`${value.pattern.replace('<', '&lt;\u200B')} → ${value.replace}`"></option> <option v-for="(value, key) in formData.magic_regex" :key="key" :value="`${key}`" v-html="`${value.pattern} → ${value.replace}`"></option>
</datalist> </datalist>
</div> </div>
</div> </div>
@ -507,7 +507,7 @@
newTask.taskname = this.taskNameFilter newTask.taskname = this.taskNameFilter
lastTask = this.formData.tasklist[this.formData.tasklist.length - 1] lastTask = this.formData.tasklist[this.formData.tasklist.length - 1]
if (this.formData.tasklist.length > 0 && lastTask.taskname) { if (this.formData.tasklist.length > 0 && lastTask.taskname) {
newTask.savepath = lastTask.savepath.replace(lastTask.taskname, 'TASKNAME') newTask.savepath = lastTask.savepath.replace(lastTask.taskname, 'newTask')
} else { } else {
newTask.savepath = this.taskDirSelected + "/" + newTask.taskname newTask.savepath = this.taskDirSelected + "/" + newTask.taskname
} }
@ -530,7 +530,7 @@
const matches = decodeURIComponent(task.shareurl).match(/\/(\w{32})-([^\/]+)$/); const matches = decodeURIComponent(task.shareurl).match(/\/(\w{32})-([^\/]+)$/);
if (matches) { if (matches) {
task.taskname = task.taskname == "" ? matches[2] : task.taskname; task.taskname = task.taskname == "" ? matches[2] : task.taskname;
task.savepath = task.savepath.replace(/TASKNAME/g, matches[2]); task.savepath = task.savepath.replace(/newTask/g, matches[2]);
} }
// 从分享中提取任务名 // 从分享中提取任务名
axios.get('/get_share_detail', { params: { shareurl: task.shareurl } }) axios.get('/get_share_detail', { params: { shareurl: task.shareurl } })
@ -547,7 +547,7 @@
this.$set(task, "shareurl_ban", response.data.error); this.$set(task, "shareurl_ban", response.data.error);
} else { } else {
task.taskname = task.taskname == "" ? response.data.share.title : task.taskname; task.taskname = task.taskname == "" ? response.data.share.title : task.taskname;
task.savepath = task.savepath.replace(/TASKNAME/g, response.data.share.title); task.savepath = task.savepath.replace(/newTask/g, response.data.share.title);
this.$set(task, "shareurl_ban", undefined); this.$set(task, "shareurl_ban", undefined);
} }
}) })