mirror of
https://github.com/Cp0204/quark-auto-save.git
synced 2026-01-16 01:10:44 +08:00
✨ 以目录树显示更新文件
This commit is contained in:
parent
ad7944af29
commit
818edc95ee
@ -16,6 +16,15 @@ import random
|
|||||||
import requests
|
import requests
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
# 兼容青龙
|
||||||
|
try:
|
||||||
|
from treelib import Tree
|
||||||
|
except:
|
||||||
|
print("正在尝试自动安装依赖...")
|
||||||
|
os.system("pip3 install treelib &> /dev/null")
|
||||||
|
from treelib import Tree
|
||||||
|
|
||||||
|
|
||||||
CONFIG_DATA = {}
|
CONFIG_DATA = {}
|
||||||
CHECK_DATA = {}
|
CHECK_DATA = {}
|
||||||
NOTIFYS = []
|
NOTIFYS = []
|
||||||
@ -457,23 +466,17 @@ class Quark:
|
|||||||
return
|
return
|
||||||
# print("stoken: ", stoken)
|
# print("stoken: ", stoken)
|
||||||
|
|
||||||
updated_tips = []
|
updated_tree = self.dir_check_and_save(task, pwd_id, stoken, pdir_fid)
|
||||||
updated_path = self.dir_check_and_save(task, pwd_id, stoken, pdir_fid)
|
if updated_tree.size(1) > 0:
|
||||||
for path, files in updated_path.items():
|
add_notify(f"《{task['taskname']}》添加追更:\n{updated_tree}")
|
||||||
if files:
|
|
||||||
if path == task["savepath"]:
|
|
||||||
updated_tips.append(", ".join(files))
|
|
||||||
else:
|
|
||||||
updated_tips.append(f"{path}:{', '.join(files)}")
|
|
||||||
if updated_tips:
|
|
||||||
add_notify(f"《{task['taskname']}》添加追更:\n{'\n\n'.join(updated_tips)}")
|
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
print(f"任务结束:没有新的转存任务")
|
print(f"任务结束:没有新的转存任务")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def dir_check_and_save(self, task, pwd_id, stoken, pdir_fid="", subdir_path=""):
|
def dir_check_and_save(self, task, pwd_id, stoken, pdir_fid="", subdir_path=""):
|
||||||
updated_paths = {}
|
tree = Tree()
|
||||||
|
tree.create_node(task["savepath"], pdir_fid)
|
||||||
# 获取分享文件列表
|
# 获取分享文件列表
|
||||||
share_file_list = self.get_detail(pwd_id, stoken, pdir_fid)
|
share_file_list = self.get_detail(pwd_id, stoken, pdir_fid)
|
||||||
# 仅有一个文件夹
|
# 仅有一个文件夹
|
||||||
@ -486,7 +489,7 @@ class Quark:
|
|||||||
share_file_list = self.get_detail(pwd_id, stoken, share_file_list[0]["fid"])
|
share_file_list = self.get_detail(pwd_id, stoken, share_file_list[0]["fid"])
|
||||||
if not share_file_list:
|
if not share_file_list:
|
||||||
# add_notify(f"《{task['taskname']}》:分享目录为空")
|
# add_notify(f"《{task['taskname']}》:分享目录为空")
|
||||||
return updated_paths
|
return tree
|
||||||
# print("share_file_list: ", share_file_list)
|
# print("share_file_list: ", share_file_list)
|
||||||
|
|
||||||
# 获取目标目录文件列表
|
# 获取目标目录文件列表
|
||||||
@ -533,15 +536,21 @@ class Quark:
|
|||||||
if task.get("update_subdir", False):
|
if task.get("update_subdir", False):
|
||||||
if re.search(task["update_subdir"], share_file["file_name"]):
|
if re.search(task["update_subdir"], share_file["file_name"]):
|
||||||
print(f"检查子文件夹:{savepath}/{share_file['file_name']}")
|
print(f"检查子文件夹:{savepath}/{share_file['file_name']}")
|
||||||
subdir_updated_path = self.dir_check_and_save(
|
subdir_tree = self.dir_check_and_save(
|
||||||
task,
|
task,
|
||||||
pwd_id,
|
pwd_id,
|
||||||
stoken,
|
stoken,
|
||||||
share_file["fid"],
|
share_file["fid"],
|
||||||
f"{subdir_path}/{share_file['file_name']}",
|
f"{subdir_path}/{share_file['file_name']}",
|
||||||
)
|
)
|
||||||
if subdir_updated_path:
|
if subdir_tree.size(1) > 0:
|
||||||
updated_paths.update(subdir_updated_path)
|
# 合并子目录树
|
||||||
|
tree.create_node(
|
||||||
|
share_file["file_name"],
|
||||||
|
share_file["fid"],
|
||||||
|
parent=pdir_fid,
|
||||||
|
)
|
||||||
|
tree.merge(share_file["fid"], subdir_tree, deep=False)
|
||||||
|
|
||||||
fid_list = [item["fid"] for item in need_save_list]
|
fid_list = [item["fid"] for item in need_save_list]
|
||||||
fid_token_list = [item["share_fid_token"] for item in need_save_list]
|
fid_token_list = [item["share_fid_token"] for item in need_save_list]
|
||||||
@ -556,16 +565,18 @@ class Quark:
|
|||||||
query_task_return = self.query_task(task_id)
|
query_task_return = self.query_task(task_id)
|
||||||
if query_task_return["code"] == 0:
|
if query_task_return["code"] == 0:
|
||||||
save_name_list.sort()
|
save_name_list.sort()
|
||||||
updated_paths[savepath] = save_name_list
|
# 建立目录树
|
||||||
|
for item in need_save_list:
|
||||||
|
tree.create_node(
|
||||||
|
item["save_name"], item["fid"], parent=pdir_fid
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
err_msg = query_task_return["message"]
|
err_msg = query_task_return["message"]
|
||||||
else:
|
else:
|
||||||
err_msg = save_file_return["message"]
|
err_msg = save_file_return["message"]
|
||||||
if err_msg:
|
if err_msg:
|
||||||
add_notify(f"《{task['taskname']}》转存失败:{err_msg}")
|
add_notify(f"《{task['taskname']}》转存失败:{err_msg}")
|
||||||
else:
|
return tree
|
||||||
updated_paths[savepath] = []
|
|
||||||
return updated_paths
|
|
||||||
|
|
||||||
def query_task(self, task_id):
|
def query_task(self, task_id):
|
||||||
retry_index = 0
|
retry_index = 0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user