mirror of
https://github.com/Cp0204/quark-auto-save.git
synced 2026-01-17 01:40:44 +08:00
Compare commits
4 Commits
fdb13e8257
...
dc3afeae1d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc3afeae1d | ||
|
|
c59ef3f0cf | ||
|
|
6649e14472 | ||
|
|
3394ae7400 |
@ -93,11 +93,11 @@
|
||||
<input type="text" v-model="formData.crontab" class="form-control" placeholder="必填">
|
||||
</div>
|
||||
|
||||
<div class="row title">
|
||||
<div class="row title" title="通知推送,支持多个渠道,见Wiki">
|
||||
<div class="col">
|
||||
<h2 style="display: inline-block;"><i class="bi bi-bell"></i> 通知</h2>
|
||||
<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/通知推送服务配置" target="_blank">?</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col text-right">
|
||||
@ -117,11 +117,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row title" v-if="Object.keys(getAvailablePlugins(formData.plugins)).length">
|
||||
<div class="row title" v-if="Object.keys(getAvailablePlugins(formData.plugins)).length" title="各插件的配置选项,具体键值由插件定义,见Wiki">
|
||||
<div class="col">
|
||||
<h2 style="display: inline-block;"><i class="bi bi-plug"></i> 插件</h2>
|
||||
<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/插件配置" target="_blank">?</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -142,6 +142,35 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row title" title="预定义的正则匹配规则,在任务列表中可直接点击使用">
|
||||
<div class="col">
|
||||
<h2 style="display: inline-block;"><i class="bi bi-magic"></i> 魔法匹配</h2>
|
||||
<span class="badge badge-pill badge-light">
|
||||
<a href="github.com/Cp0204/quark-auto-save/wiki/正则处理教程#21-魔法匹配" target="_blank">?</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col text-right">
|
||||
<button type="button" class="btn btn-outline-primary mb-3" @click="addMagicRegex()">+</button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-for="(value, key) in formData.magic_regex" :key="key" class="form-group mb-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">魔法名</span>
|
||||
</div>
|
||||
<input type="text" :data-oldkey="key" v-model="key" class="form-control" @change="updateMagicRegexKey($event.target.dataset.oldkey, $event.target.value)" placeholder="自定义名称">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">正则处理</span>
|
||||
</div>
|
||||
<input type="text" v-model="value.pattern" class="form-control" placeholder="匹配表达式">
|
||||
<input type="text" v-model="value.replace" class="form-control" placeholder="替换表达式">
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-outline-danger" @click="removeMagicRegex(key)">-</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div v-if="activeTab === 'tasklist'">
|
||||
@ -220,7 +249,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="form-group row" title="支持子目录链接,Web端打开分享点入目录,复制浏览器的URL即可;支持带提取码链接,说明见Wiki">
|
||||
<label class="col-sm-2 col-form-label">分享链接</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="input-group">
|
||||
@ -239,8 +268,7 @@
|
||||
<div class="input-group">
|
||||
<input type="text" name="savepath[]" class="form-control" v-model="task.savepath" placeholder="必填" @focus="focusTaskname(index, task)">
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-secondary" type="button" v-if="smart_param.savepath && smart_param.index == index && task.savepath != smart_param.origin_savepath" @click="task.savepath = smart_param.origin_savepath"><i class="
|
||||
bi bi-reply"></i></button>
|
||||
<button class="btn btn-secondary" type="button" v-if="smart_param.savepath && smart_param.index == index && task.savepath != smart_param.origin_savepath" @click="task.savepath = smart_param.origin_savepath"><i class="bi bi-reply"></i></button>
|
||||
<button class="btn btn-outline-secondary dropdown-toggle" type="button" @click="getSavepathDirs(task.savepath)" data-toggle="dropdown" aria-expanded="false">选择</button>
|
||||
<div class="dropdown-menu" style="max-height: 300px; min-width: 200px; overflow-y: auto;">
|
||||
<a class="dropdown-item" @click.stop.prevent="selectSavepath(index,getParentDirectory(task.savepath),'..')" href="#">..</a>
|
||||
@ -254,7 +282,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="form-group row" title="可用作筛选,只转存匹配到的文件名的文件,留空则转存所有文件">
|
||||
<label class="col-sm-2 col-form-label">保存规则</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="input-group">
|
||||
@ -263,9 +291,9 @@
|
||||
</div>
|
||||
<input type="text" name="pattern[]" class="form-control" v-model="task.pattern" placeholder="匹配表达式" list="magicRegex">
|
||||
<input type="text" name="replace[]" class="form-control" v-model="task.replace" placeholder="替换表达式">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-append" title="保存时只比较文件名的部分,01.mp4 和 01.mkv 视同为同一文件,不重复转存">
|
||||
<div class="input-group-text">
|
||||
<input type="checkbox" title="忽略后缀" v-model="task.ignore_extension"> 忽略后缀
|
||||
<input type="checkbox" v-model="task.ignore_extension"> 忽略后缀
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -274,8 +302,8 @@
|
||||
</datalist>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">文件开始</label>
|
||||
<div class="form-group row" title="只转存修改日期>选中文件的文件,在容量不够或几百集动漫的场景下非常有用">
|
||||
<label class="col-sm-2 col-form-label">文件起始</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" placeholder="可选" name="startfid[]" v-model="task.startfid">
|
||||
@ -285,10 +313,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">更子目录</label>
|
||||
<div class="form-group row" title="需匹配到各级嵌套目录名才会更新,否则子目录在第一次转存后不会更新。注意:原理是逐级索引,深层嵌套目录的场景下效率非常低,慎用 .*">
|
||||
<label class="col-sm-2 col-form-label">更新目录</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="update_subdir[]" class="form-control" v-model="task.update_subdir" placeholder="可选,需更新子目录的正则式,多项以|分割,如 4k|1080p ,注意!深层嵌套目录慎用 .* !" title="注意!深层嵌套目录逐级索引,工作强度会非常大,慎用!">
|
||||
<input type="text" name="update_subdir[]" class="form-control" v-model="task.update_subdir" placeholder="可选,匹配需更新子目录(含各级嵌套目录)的正则表达式,多项以|分割,如 4k|1080p">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
@ -297,7 +325,7 @@
|
||||
<input type="date" name="enddate[]" class="form-control" v-model="task.enddate" placeholder="可选">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="form-group row" title="只在勾选的星期时才运行,在某些周更剧的场景下非常有用">
|
||||
<label class="col-sm-2 col-form-label">运行星期</label>
|
||||
<div class="col-sm-10 col-form-label">
|
||||
<div class="form-check form-check-inline" title="也可用作任务总开关">
|
||||
@ -310,7 +338,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" v-if="Object.keys(getAvailablePlugins(formData.plugins)).length">
|
||||
<div class="form-group row" v-if="Object.keys(getAvailablePlugins(formData.plugins)).length" title="单个任务的插件选项,具体键值由插件定义,见Wiki">
|
||||
<label class="col-sm-2 col-form-label">插件选项</label>
|
||||
<div class="col-sm-10">
|
||||
<v-jsoneditor v-model="task.addition" :options="{mode:'tree'}" :plus="false" height="180px"></v-jsoneditor>
|
||||
@ -777,6 +805,25 @@
|
||||
this.changeShareurl(task);
|
||||
this.smart_param.showSuggestions = false;
|
||||
},
|
||||
addMagicRegex() {
|
||||
const newKey = `$MAGIC_${Object.keys(this.formData.magic_regex).length + 1}`;
|
||||
this.$set(this.formData.magic_regex, newKey, { pattern: '', replace: '' });
|
||||
},
|
||||
updateMagicRegexKey(oldKey, newKey) {
|
||||
if (oldKey !== newKey) {
|
||||
if (this.formData.magic_regex[newKey]) {
|
||||
alert(`魔法名 [${newKey}] 已存在,请使用其他名称`);
|
||||
return;
|
||||
}
|
||||
this.$set(this.formData.magic_regex, newKey, this.formData.magic_regex[oldKey]);
|
||||
this.$delete(this.formData.magic_regex, oldKey);
|
||||
}
|
||||
},
|
||||
removeMagicRegex(key) {
|
||||
if (confirm(`确认删除魔法匹配规则 [${key}] 吗?`)) {
|
||||
this.$delete(this.formData.magic_regex, key);
|
||||
}
|
||||
},
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -36,6 +36,10 @@ MAGIC_REGEX = {
|
||||
"pattern": r".*?(?<!\d)([Ss]\d{1,2})?([Ee]?[Pp]?[Xx]?\d{1,3})(?!\d).*?\.(mp4|mkv)",
|
||||
"replace": r"\1\2.\3",
|
||||
},
|
||||
"$BLACK_WORD": {
|
||||
"pattern": r"^(?!.*纯享)(?!.*加更)(?!.*超前企划)(?!.*训练室)(?!.*蒸蒸日上).*",
|
||||
"replace": "",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -12,6 +12,16 @@
|
||||
"token": ""
|
||||
}
|
||||
},
|
||||
"magic_regex": {
|
||||
"$TV": {
|
||||
"pattern": ".*?(?<!\\d)([Ss]\\d{1,2})?([Ee]?[Pp]?[Xx]?\\d{1,3})(?!\\d).*?\\.(mp4|mkv)",
|
||||
"replace": "\\1\\2.\\3"
|
||||
},
|
||||
"$BLACK_WORD": {
|
||||
"pattern": "^(?!.*纯享)(?!.*加更)(?!.*超前企划)(?!.*训练室)(?!.*蒸蒸日上).*",
|
||||
"replace": ""
|
||||
}
|
||||
},
|
||||
"tasklist": [
|
||||
{
|
||||
"taskname": "测试-魔法匹配剧集(这是一组有效分享,配置CK后可测试任务是否正常)",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user