Merge pull request #68 from x1ao4/dev

修复夸克网盘文件夹大小显示为 0 项的问题
This commit is contained in:
x1ao4 2025-10-03 13:06:27 +08:00 committed by GitHub
commit 8e59d338bc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1571,8 +1571,58 @@ class Quark:
break
if len(file_list) >= response["metadata"]["_total"]:
break
# 修复文件夹大小显示问题当include_items字段不存在时通过额外API调用获取
file_list = self._fix_folder_sizes(file_list)
return file_list
def _fix_folder_sizes(self, file_list):
"""
修复文件夹大小显示问题
当include_items字段不存在时通过额外API调用获取文件夹项目数量
"""
if not isinstance(file_list, list):
return file_list
for item in file_list:
if item.get("dir", False) and "include_items" not in item:
folder_id = item.get("fid")
if folder_id:
# 获取文件夹项目数量
item_count = self._get_folder_item_count(folder_id)
item["include_items"] = item_count
return file_list
def _get_folder_item_count(self, folder_id):
"""
获取文件夹项目数量
"""
try:
url = f"{self.BASE_URL}/1/clouddrive/file/sort"
querystring = {
"pr": "ucpro",
"fr": "pc",
"uc_param_str": "",
"pdir_fid": folder_id,
"_page": 1,
"_size": 1, # 只获取第一页,用于获取总数
"_fetch_total": "1",
"_fetch_sub_dirs": "0",
"_sort": "file_type:asc,updated_at:desc",
"_fetch_full_path": 0,
}
response = self._send_request("GET", url, params=querystring).json()
if response.get("code") == 0:
metadata = response.get("metadata", {})
return metadata.get("_total", 0)
else:
return 0
except Exception:
return 0
def get_paths(self, folder_id):
"""
获取指定文件夹ID的完整路径信息