diff --git a/app/api/endpoints/aliyun.py b/app/api/endpoints/aliyun.py index 2da5c7fe..e9529ab6 100644 --- a/app/api/endpoints/aliyun.py +++ b/app/api/endpoints/aliyun.py @@ -87,10 +87,11 @@ def list_aliyun(fileitem: schemas.FileItem, size=fileinfo.get("size"), extension=fileinfo.get("file_extension"), modify_time=StringUtils.str_to_timestamp(fileinfo.get("updated_at")), - thumbnail=fileinfo.get("thumbnail") + thumbnail=fileinfo.get("thumbnail"), + drive_id=fileinfo.get("drive_id"), )] return [] - items = AliyunHelper().list_files(parent_file_id=fileitem.fileid, order_by=sort) + items = AliyunHelper().list_files(drive_id=fileitem.drive_id, parent_file_id=fileitem.fileid, order_by=sort) if not items: return [] return [schemas.FileItem( @@ -102,7 +103,8 @@ def list_aliyun(fileitem: schemas.FileItem, size=item.get("size"), extension=item.get("file_extension"), modify_time=StringUtils.str_to_timestamp(item.get("updated_at")), - thumbnail=item.get("thumbnail") + thumbnail=item.get("thumbnail"), + drive_id=item.get("drive_id"), ) for item in items] diff --git a/app/helper/aliyun.py b/app/helper/aliyun.py index 54bf1271..83d5eefd 100644 --- a/app/helper/aliyun.py +++ b/app/helper/aliyun.py @@ -304,7 +304,7 @@ class AliyunHelper: self.__handle_error(res, "获取用户信息") return {} - def list_files(self, parent_file_id: str = 'root', list_type: str = None, + def list_files(self, drive_id: str = None, parent_file_id: str = 'root', list_type: str = None, limit: int = 100, order_by: str = 'updated_at') -> List[dict]: """ 浏览文件 @@ -316,17 +316,36 @@ class AliyunHelper: params = self.get_access_params() if not params: return [] - # 最终返回数据 - ret_items = [] # 请求头 headers = self.get_headers(params) + # 根目录处理 + if not drive_id: + return [ + { + "file_id": parent_file_id, + "drive_id": params.get("resourceDriveId"), + "parent_file_id": "root", + "type": "folder", + "path": "/资源库/", + "name": "资源库", + }, { + "file_id": parent_file_id, + "drive_id": params.get("backDriveId"), + "parent_file_id": "root", + "type": "folder", + "path": "/备份盘/", + "name": "备份盘", + } + ] + # 返回数据 + ret_items = [] # 分页获取 next_marker = None while True: if not parent_file_id or parent_file_id == "/": parent_file_id = "root" res = RequestUtils(headers=headers, timeout=10).post_res(self.list_file_url, json={ - "drive_id": params.get("resourceDriveId"), + "drive_id": drive_id, "type": list_type, "limit": limit, "order_by": order_by, diff --git a/app/schemas/file.py b/app/schemas/file.py index bf3badd2..36258f82 100644 --- a/app/schemas/file.py +++ b/app/schemas/file.py @@ -28,3 +28,5 @@ class FileItem(BaseModel): thumbnail: Optional[str] = None # 115 pickcode pickcode: Optional[str] = None + # drive_id + drive_id: Optional[str] = None