feat:阿里云盘支持备份盘

This commit is contained in:
jxxghp
2024-06-20 13:15:59 +08:00
parent 185b72dc8d
commit 9937f6792e
3 changed files with 30 additions and 7 deletions

View File

@ -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]

View File

@ -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,

View File

@ -28,3 +28,5 @@ class FileItem(BaseModel):
thumbnail: Optional[str] = None
# 115 pickcode
pickcode: Optional[str] = None
# drive_id
drive_id: Optional[str] = None