From 59aca339bb33c5d44c5bddf49f6f7820c8c698c9 Mon Sep 17 00:00:00 2001 From: x1ao4 Date: Fri, 3 Oct 2025 11:55:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=B8=E5=85=8B=E7=BD=91?= =?UTF-8?q?=E7=9B=98=E6=96=87=E4=BB=B6=E5=A4=B9=E5=A4=A7=E5=B0=8F=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=BA=200=20=E9=A1=B9=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 问题:用户文件夹 API 不再返回 include_items 字段,导致文件夹显示 0 项 - 解决:在 ls_dir 方法中添加自动修复逻辑,通过额外 API 调用获取文件夹项目数量 --- quark_auto_save.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/quark_auto_save.py b/quark_auto_save.py index ea5203d..0ed7e9f 100644 --- a/quark_auto_save.py +++ b/quark_auto_save.py @@ -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的完整路径信息