mirror of
https://github.com/Cp0204/quark-auto-save.git
synced 2026-01-14 16:30:43 +08:00
Merge 97478c85f2 into edbc4c50c9
This commit is contained in:
commit
910037b388
13
app/run.py
13
app/run.py
@ -235,14 +235,17 @@ def get_task_suggestions():
|
||||
return jsonify({"success": False, "message": "未登录"})
|
||||
query = request.args.get("q", "").lower()
|
||||
deep = request.args.get("d", "").lower()
|
||||
net_data = config_data.get("source", {}).get("net", {})
|
||||
cs_data = config_data.get("source", {}).get("cloudsaver", {})
|
||||
ps_data = config_data.get("source", {}).get("pansou", {})
|
||||
|
||||
def net_search():
|
||||
base_url = base64.b64decode("aHR0cHM6Ly9zLjkxNzc4OC54eXo=").decode()
|
||||
url = f"{base_url}/task_suggestions?q={query}&d={deep}"
|
||||
response = requests.get(url)
|
||||
return response.json()
|
||||
if net_data.get("enable").lower() != "false":
|
||||
base_url = base64.b64decode("aHR0cHM6Ly9zLjkxNzc4OC54eXo=").decode()
|
||||
url = f"{base_url}/task_suggestions?q={query}&d={deep}"
|
||||
response = requests.get(url)
|
||||
return response.json()
|
||||
return []
|
||||
|
||||
def cs_search():
|
||||
if (
|
||||
@ -268,7 +271,7 @@ def get_task_suggestions():
|
||||
def ps_search():
|
||||
if (ps_data.get("server")):
|
||||
ps = PanSou(ps_data.get("server"))
|
||||
return ps.search(query)
|
||||
return ps.search(query, deep == "1")
|
||||
return []
|
||||
|
||||
try:
|
||||
|
||||
@ -11,5 +11,6 @@ def iso_to_cst(iso_time_str: str) -> str:
|
||||
str: CST(China Standard Time) 时间字符串
|
||||
"""
|
||||
dt = datetime.fromisoformat(iso_time_str)
|
||||
dt_cst = dt.astimezone(timezone(timedelta(hours=8)))
|
||||
tz = timezone(timedelta(hours=8))
|
||||
dt_cst = dt if dt.astimezone(tz) > datetime.now(tz) else dt.astimezone(tz)
|
||||
return dt_cst.strftime("%Y-%m-%d %H:%M:%S") if dt_cst.year >= 1970 else ""
|
||||
|
||||
@ -14,7 +14,7 @@ class PanSou:
|
||||
self.server = server
|
||||
self.session = requests.Session()
|
||||
|
||||
def search(self, keyword: str) -> list:
|
||||
def search(self, keyword: str, refresh: bool = False) -> list:
|
||||
"""搜索资源
|
||||
|
||||
Args:
|
||||
@ -25,7 +25,7 @@ class PanSou:
|
||||
"""
|
||||
try:
|
||||
url = f"{self.server.rstrip('/')}/api/search"
|
||||
params = {"kw": keyword, "cloud_types": ["quark"], "res": "merge", "refresh": True}
|
||||
params = {"kw": keyword, "cloud_types": ["quark"], "res": "merge", "refresh": refresh}
|
||||
response = self.session.get(url, params=params)
|
||||
result = response.json()
|
||||
if result.get("code") == 0:
|
||||
|
||||
@ -196,6 +196,18 @@
|
||||
<input type="text" v-model="formData.api_token" class="form-control" style="background-color:white;" disabled>
|
||||
</div>
|
||||
|
||||
<div class="row title" title="资源搜索服务配置,用于任务名称智能搜索">
|
||||
<div class="col-10">
|
||||
<h2 style="display: inline-block;"><i class="bi bi-search"></i> 网络公开</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">启用</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" v-model="formData.source.net.enable" class="form-control" placeholder="是否启用网络公开搜索,默认启用,可选值 True/False">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row title" title="资源搜索服务配置,用于任务名称智能搜索">
|
||||
<div class="col-10">
|
||||
<h2 style="display: inline-block;"><i class="bi bi-search"></i> CloudSaver</h2>
|
||||
@ -325,7 +337,7 @@
|
||||
<div class="input-group">
|
||||
<input type="text" name="shareurl[]" class="form-control" v-model="task.shareurl" placeholder="必填" @blur="changeShareurl(task)">
|
||||
<div class="input-group-append" v-if="task.shareurl">
|
||||
<button type="button" class="btn btn-outline-secondary" @click="fileSelect.selectDir=true;fileSelect.previewRegex=false;fileSelect.sortBy='file_name';fileSelect.sortOrder='desc';showShareSelect(index)" title="选择文件夹"><i class="bi bi-folder"></i></button>
|
||||
<button type="button" class="btn btn-outline-secondary" @click="fileSelect.selectDir=true;fileSelect.switchShare=false;fileSelect.previewRegex=false;fileSelect.sortBy='file_name';fileSelect.sortOrder='desc';showShareSelect(index)" title="选择文件夹"><i class="bi bi-folder"></i></button>
|
||||
<div class="input-group-text">
|
||||
<a target="_blank" :href="task.shareurl"><i class="bi bi-box-arrow-up-right"></i></a>
|
||||
</div>
|
||||
@ -350,7 +362,7 @@
|
||||
<div class="col-sm-10">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<button class="btn btn-outline-secondary" type="button" @click="fileSelect.selectDir=true;fileSelect.previewRegex=true;fileSelect.sortBy='file_name';fileSelect.sortOrder='asc';showShareSelect(index)" title="预览正则处理效果">正则处理</button>
|
||||
<button class="btn btn-outline-secondary" type="button" @click="fileSelect.selectDir=true;fileSelect.switchShare=false;fileSelect.previewRegex=true;fileSelect.sortBy='file_name';fileSelect.sortOrder='asc';showShareSelect(index)" title="预览正则处理效果">正则处理</button>
|
||||
</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="替换表达式">
|
||||
@ -371,7 +383,7 @@
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" placeholder="可选,只转存修改日期>此文件的文件" name="startfid[]" v-model="task.startfid">
|
||||
<div class="input-group-append" v-if="task.shareurl">
|
||||
<button class="btn btn-outline-secondary" type="button" @click="fileSelect.selectDir=false;fileSelect.previewRegex=false;fileSelect.sortBy='updated_at';fileSelect.sortOrder='desc';showShareSelect(index)">选择</button>
|
||||
<button class="btn btn-outline-secondary" type="button" @click="fileSelect.selectDir=false;fileSelect.switchShare=false;fileSelect.previewRegex=false;fileSelect.sortBy='updated_at';fileSelect.sortOrder='desc';showShareSelect(index)">选择</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -468,6 +480,22 @@
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body small">
|
||||
<!-- 分享链接来源 -->
|
||||
<div class="mb-3" v-if="fileSelect.switchShare">
|
||||
<div><b>名称:</b>
|
||||
<span :title="fileSelect.share.content">{{ fileSelect.share.taskname }}</span>
|
||||
</div>
|
||||
<div><b>链接:</b>
|
||||
<a :href="fileSelect.share.shareurl" target="_blank" @click.stop>{{ fileSelect.share.shareurl }}</a>
|
||||
</div>
|
||||
<div><b>来源:</b>
|
||||
<span class="badge badge-info">{{ fileSelect.share.source || "网络公开" }}</span>
|
||||
<span class="badge badge-info" v-if="fileSelect.share.channel">{{ fileSelect.share.channel }}</span>
|
||||
</div>
|
||||
<div v-if="fileSelect.share.datetime"><b>时间:</b>
|
||||
<span>{{ fileSelect.share.datetime }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="alert alert-warning" v-if="fileSelect.error" v-html="fileSelect.error"></div>
|
||||
<div v-else>
|
||||
<!-- 正则处理表达式 -->
|
||||
@ -530,6 +558,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer" v-if="fileSelect.selectDir && !fileSelect.previewRegex">
|
||||
<span v-if="fileSelect.switchShare">分享:</span>
|
||||
<button type="button" class="btn btn-primary btn-sm" @click="switchShare(-1)" v-if="fileSelect.switchShare">上一个</button>
|
||||
<button type="button" class="btn btn-primary btn-sm" @click="switchShare(1)" v-if="fileSelect.switchShare">下一个</button>
|
||||
<span v-html="fileSelect.selectShare ? '转存:' : '保存到:'"></span>
|
||||
<button type="button" class="btn btn-primary btn-sm" @click="selectCurrentFolder()">当前文件夹</button>
|
||||
<button type="button" class="btn btn-primary btn-sm" v-if="!fileSelect.selectShare" @click="selectCurrentFolder(true)">当前文件夹<span class="badge badge-light" v-if="fileSelect.index<this.formData.tasklist.length" v-html="'/'+formData.tasklist[fileSelect.index].taskname"></span></button>
|
||||
@ -555,6 +586,9 @@
|
||||
tasklist: [],
|
||||
magic_regex: {},
|
||||
source: {
|
||||
net: {
|
||||
enable: ""
|
||||
},
|
||||
cloudsaver: {
|
||||
server: "",
|
||||
username: "",
|
||||
@ -595,12 +629,14 @@
|
||||
configModified: false,
|
||||
fileSelect: {
|
||||
index: null,
|
||||
share: {},
|
||||
shareurl: "",
|
||||
stoken: "",
|
||||
fileList: [],
|
||||
paths: [],
|
||||
selectDir: true,
|
||||
selectShare: true,
|
||||
switchShare: false,
|
||||
previewRegex: false,
|
||||
sortBy: "updated_at",
|
||||
sortOrder: "desc"
|
||||
@ -702,6 +738,11 @@
|
||||
server: ""
|
||||
};
|
||||
}
|
||||
if (!config_data.source.net) {
|
||||
config_data.source.net = {
|
||||
enable: ""
|
||||
};
|
||||
}
|
||||
this.formData = config_data;
|
||||
setTimeout(() => {
|
||||
this.configModified = false;
|
||||
@ -986,7 +1027,9 @@
|
||||
selectSuggestion(index, suggestion) {
|
||||
this.smart_param.showSuggestions = false;
|
||||
this.fileSelect.selectDir = true;
|
||||
this.fileSelect.switchShare = true;
|
||||
this.fileSelect.previewRegex = false;
|
||||
this.fileSelect.share = suggestion;
|
||||
this.showShareSelect(index, suggestion.shareurl);
|
||||
},
|
||||
addMagicRegex() {
|
||||
@ -1047,6 +1090,7 @@
|
||||
showSavepathSelect(index) {
|
||||
this.fileSelect.selectShare = false;
|
||||
this.fileSelect.selectDir = true;
|
||||
this.fileSelect.switchShare = false;
|
||||
this.fileSelect.previewRegex = false;
|
||||
this.fileSelect.error = undefined;
|
||||
this.fileSelect.fileList = [];
|
||||
@ -1094,6 +1138,21 @@
|
||||
$('#fileSelectModal').modal('toggle');
|
||||
this.getShareDetail();
|
||||
},
|
||||
switchShare(index) {
|
||||
currentIndex = this.smart_param.taskSuggestions.data.indexOf(this.fileSelect.share);
|
||||
nextIndex = currentIndex + index;
|
||||
if (nextIndex < 0) {
|
||||
alert("没有上一个啦");
|
||||
} else if (nextIndex >= this.smart_param.taskSuggestions.data.length) {
|
||||
alert("没有下一个啦");
|
||||
} else {
|
||||
this.fileSelect.error = "";
|
||||
this.fileSelect.stoken = "";
|
||||
this.fileSelect.share = this.smart_param.taskSuggestions.data[nextIndex];
|
||||
this.fileSelect.shareurl = this.smart_param.taskSuggestions.data[nextIndex].shareurl;
|
||||
this.getShareDetail();
|
||||
}
|
||||
},
|
||||
navigateTo(fid, name) {
|
||||
dir = { fid: fid, name: name }
|
||||
if (this.fileSelect.selectShare) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user