- 修复保持分享链接根目录出错。
updateuser
命令中也更新 tokens。
Add new apis and remove unneeded apis.
-
PcsFile class
-
path
Default is the name of the file. It will be different from different apis returned. See
AliPCSApi.meta
,AliPCSApi.meta_by_path
,AliPCSApi.get_file
,AliPCSApi.list
,AliPCSApi.list_iter
,AliPCSApi.path_traceback
,AliPCSApi.path
. -
update_download_url
The method is removed. Use
AliPCSApi.update_download_url
instead.
-
-
FromTo type
The original
FromTo
is a nametuple. We change it to a general typeFromTo = Tuple[F, T]
-
PcsDownloadUrl class
-
expires
Add the method to check whether the
download_url
expires.
-
-
AliPCSBaseError class
The base Exception class used for the PCS errors.
-
AliPCSError(AliPCSBaseError) class
The error returned from alipan server when the client’s request is incorrect or the token is expired.
It throw at AliPCS class when an error occurs.
-
DownloadError(AliPCSBaseError) class
An error occurs when downloading action fails.
-
UploadError(AliPCSBaseError) class
An error occurs when uploading action fails.
-
RapidUploadError(UploadError) class
An error occurred when rapid uploading action fails.
-
make_alipcs_error function
Make an AliPCSError instance.
-
handle_error function
uses the
_error_max_retries
attribute of the wrapped method’s class to retry.
-
AliPCS class
class AliPCS: SHARE_AUTHS: Dict[str, SharedAuth] = {} def __init__( self, refresh_token: str, access_token: str = "", token_type: str = "Bearer", expire_time: int = 0, user_id: str = "", user_name: str = "", nick_name: str = "", device_id: str = "", default_drive_id: str = "", role: str = "", status: str = "", error_max_retries: int = 2, max_keepalive_connections: int = 50, max_connections: int = 50, keepalive_expiry: float = 10 * 60, connection_max_retries: int = 2, ): ...
The core alipan.com service apis. It directly handles the raw requests and responses of the service.
New/Changed APIs are following:
-
path_traceback
method (New)Traceback the path of the file by its file_id. Return the list of all parent directories' info from the file to the top level directory.
-
meta_by_path
method (New)Get meta info of the file by its path.
Can not get the shared files' meta info.
-
meta
method (Changed)Get meta info of the file by its file_id.
-
exists
method (Changed)Check whether the file exists. Return True if the file exists and does not in the trash else False.
-
exists_in_trash
method (New)Check whether the file exists in the trash. Return True if the file exists in the trash else False.
-
walk
method (New)Walk through the directory tree by its file_id.
-
download_link
method (Changed)Get download link of the file by its file_id.
First try to get the download link from the meta info of the file. If the download link is not in the meta info, then request the getting download url api.
-
-
AliPCSApi class
class AliPCSApi: def __init__( self, refresh_token: str, access_token: str = "", token_type: str = "", expire_time: int = 0, user_id: str = "", user_name: str = "", nick_name: str = "", device_id: str = "", default_drive_id: str = "", role: str = "", status: str = "", error_max_retries: int = 2, max_keepalive_connections: int = 50, max_connections: int = 50, keepalive_expiry: float = 10 * 60, connection_max_retries: int = 2, ): ...
The core alipan.com service api with wrapped AliPCS class. It parses the raw content of response of AliPCS request into the inner data structions.
-
New/Changed APIs are following:
-
path_traceback
method (New)Traceback the path of the file. Return the list of all
PcsFile
s from the file to the top level directory.Important: The
path
property of the returnedPcsFile
has absolute path. -
meta_by_path
method (New)Get the meta of the the path. Can not get the shared files' meta info by their paths.
Important: The
path
property of the returnedPcsFile
is the argumentremotepath
. -
meta
method (Changed)Get meta info of the file.
Important: The
path
property of the returnedPcsFile
is only the name of the file. -
get_file
method (New)Get the file's info by the given
remotepath
orfile_id
If the
remotepath
is given, thefile_id
will be ignored.Important: If the
remotepath
is given, thepath
property of the returnedPcsFile
is theremotepath
. If thefile_id
is given, thepath
property of the returnedPcsFile
is only the name of the file. -
exists
method (Changed)Check whether the file exists. Return True if the file exists and does not in the trash else False.
-
exists_in_trash
method (Changed)Check whether the file exists in the trash. Return True if the file exists in the trash else False.
-
list
method (Changed)List files and directories in the given directory (which has the
file_id
). The return items size is limited by thelimit
parameter. If you want to list more, using the returnednext_marker
parameter for nextlist
call.Important: These PcsFile instances' path property is only the name of the file.
-
list_iter
method (Changed)Iterate all files and directories at the directory (which has the
file_id
).These returned PcsFile instances' path property is the path from the first sub-directory of the
file_id
to the file name. e.g. If the directory (ownedfile_id
) has pathlevel0/
, a sub-directory which of path islevel0/level1/level2
then its corresponding PcsFile.path islevel1/level2
. -
path
method (Changed)Get the pcs file's info by the given absolute
remotepath
Important: The
path
property of the returnedPcsFile
is the argumentremotepath
. -
list_path
method (Removed) -
list_path_iter
method (Removed) -
walk
method (New)Recursively Walk through the directory tree which has
file_id
.Important: These PcsFile instances' path property is the path from the first sub-directory of the
file_id
to the file. e.g. If the directory (ownedfile_id
) has pathlevel0/
, a sub-directory which of path islevel0/level1/level2
then its corresponding PcsFile.path islevel1/level2
. -
makedir
method (Changed)Make a directory in the
dir_id
directoryImportant: The
path
property of the returnedPcsFile
is only the name of the directory. -
makedir_path method (Changed)
Make a directory by the absolute
remotedir
pathReturn the list of all
PcsFile
s from the directory to the top level directory.Important: The
path
property of the returnedPcsFile
has absolute path. -
rename
method (Changed)Rename the file with
file_id
toname
Important: The
path
property of the returnedPcsFile
is only the name of the file. -
copy
method (Changed)Copy
file_ids[:-1]
tofile_ids[-1]
Important: The
path
property of the returnedPcsFile
is only the name of the file. -
update_download_url
method (New)Update the download url of the
pcs_file
if it is expired.Return a new
PcsFile
with the updated download url.
-
-
-
MeDownloader class
class MeDownloader: def __init__( self, range_request_io: RangeRequestIO, localpath: PathType, continue_: bool = False, max_retries: int = 2, done_callback: Optional[Callable[..., Any]] = None, except_callback: Optional[Callable[[Exception], Any]] = None, ) -> None: ...
-
download module
-
DownloadParams
class (Removed)We remove the
DownloadParams
instead of using arguments for function calling. -
download_file
function (Changed)download_file
downloads one remote file to one local directory. Raise any error occurred. So giving the upper level caller to handle errors. -
download
function (Changed)download
function downloads any number of remote files/directory to one local directory. It uses aThreadPoolExecutor
to download files concurrently and raise the exception if any error occurred.
-
-
upload module
-
UploadType
class (Removed)Alipan.com only support to upload a file through uploading slice parts one by one.
So, the class is not needed.
-
upload_file
function (Changed)Upload a file from one local file (
from_to[0]
) to remote (from_to[1]
).First try to rapid upload, if failed, then upload file's slices.
Raise exception if any error occurs.
-
upload
function (Changed)Upload files in
from_to_list
to Alipan Drive.Use a
ThreadPoolExecutor
to upload files concurrently.Raise exception if any error occurs.
-
MeDownloader
剥离线程池,让上层函数来控制。- 不在
upload_file
函数上进行重试,让上层函数来控制。 PcsFile.update_download_url
将在下个版本删除。请该用AliPCSApi.update_download_url
。RangeRequestIO
增加read_iter
方法。- 使用
python-dateutil
库来解析时间。
- 修复播放分享文件时的暂停问题。
- 减少上传时对文件检查的 api 请求。
- 支持 Python 3.8 ~ 3.12
- 修复上传链接超时
- 根新依赖
- 修复下载进度条太长的问题。
- 支持 阿里云盘开放平台 api。
- 因为
device_id
不再在AliPCS.user_info
中返回,需要把运行环境中的device_id
加入到user_info
。
- 修复
DeviceSessionSignatureInvalid
报错。支持自动更新signature
。
- 修复
ls
命令输出省略结果。 (#11)
- 使用临时 API 接口,让下载可用。
- 修复安装失败。
- 更新依赖。
-
下面几个 api 都增加了参数
part_number
。AliPCS.create_file
AliPCS.prepare_file
AliPCSApi.create_file
AliPCSApi.prepare_file
part_number
指明上传的该文件需要分几次上传。 这个参数需要用户自己计算出来。一般用ceiling(上传文件大小 / 单个上传分片大小)
,其中一般单个上传分片大小
建议为80MB
。
- 修复上传大于 100G 的文件失败的问题。 (#4)
- 修复播出路径出错的问题。
- 修复删除用户错误。 (#3)
- 更新
AliPCS.meta
api。
listsharedlinks
命令支持分页。
- 在下载和上传时,让调用者去初始化进度条。
- 修复不完整上传错误。
- 修复上传时创建多个同名目录的问题。
- 修复同步失败的问题。
- 修复
ls
,download
,play
,search
中--include-regex
选项。
- 更新依赖。
- 修复同步命令(
sync
)错误。 - 修复下载连接过期的问题。
- 删除命令(
remove
)支持--file-id
参数。
-
支持保存分享连接至本地
可以将他人分享了连接保存至本地,而不需要保存在网盘。这只作为一个记录。在需要是提供查看搜索功能。
使用这个功能,需要使用者在本地配置文件(
~/.alipcs-py/config.toml
)中配置:[share] store = true
提供以下命令:
命令 描述 storesharedlinks 保存分享连接至本地 listsharedlinks 显示本地保存的分享连接 listsharedfiles 显示本地保存的分享文件 findsharedlinks 查找本地保存的分享连接 findsharedfiles 查找本地保存的分享文件 findshared 查找本地保存的分享连接和文件 deletestoredshared 删除本地保存的分享连接或文件 cleanstore 清理本地保存的无效分享连接
- 更新依赖。
- 阿里网盘不支持单文件并发上传。
upload --upload-type One
失效。
- 支持 alywp.net 的分享连接。
- 修复
upload -t One
- 修复
ls
,download
,play
用于分享连接。
- 改
play
命令选项--play
缩写为--pl
- 重复列出分享根目录。
ls
,download
,play
命令用于分享 url 或 id 时,必须指定路径或 file id。
- 修复保存分享连接根目录出错。
- 支持下载、播放他人分享的文件。
listsharedpaths
命令合并到ls
。- 支持保存他人分享连接中的特定文件。
Runnable version