export_dir

导出目录树

这个模块提供了一些和导出目录树有关的函数

p115client.tool.export_dir.export_dir(client: str | PathLike | P115Client, file_ids: int | str | Iterable[int | str], target: int | str = 0, layer_limit: int = 0, parse_iter: None | Literal['depth_name', 'dict', 'path', 'patht'] | Callable[[Iterable[str]], Iterable] = 'path', delete: bool = True, app: str = 'web', *, async_: Literal[False] = False, **request_kwargs) Iterator[source]
p115client.tool.export_dir.export_dir(client: str | PathLike | P115Client, file_ids: int | str | Iterable[int | str], target: int | str = 0, layer_limit: int = 0, parse_iter: None | Literal['depth_name', 'dict', 'path', 'patht'] | Callable[[AsyncIterable[str]], AsyncIterable] = 'path', delete: bool = True, app: str = 'web', *, async_: Literal[True], **request_kwargs) AsyncIterator

执行【导出目录树】,读取产生的文件并返回按行解析的迭代器

Parameters:
  • client – 115 客户端或 cookies

  • file_ids – 待导出的目录 id 或 pickcode

  • target – 导出到的目标目录 id 或 pickcode 或 target(格式为 f”U_{aid}_{pid}”)

  • layer_limit – 层级深度,小于等于 0 时不限

  • parse_iter

    解析每一行目录树记录,并返回迭代器

    • None: 直接原样返回每一行

    • ”depth_name”: 使用 export_dir_parse_iter_depth_name

    • ”dict”: 使用 export_dir_parse_dict

    • ”path”: 使用 export_dir_parse_iter_path

    • ”patht”: 使用 export_dir_parse_iter_patht

    • Callable: 自定义解析函数

  • delete

    是否在完成后删除文件

    • True: 删除

    • False: 保留

  • app – 使用指定 app(设备)的接口

  • async – 是否异步

  • request_kwargs – 其它请求参数

Returns:

解析目录树文件的迭代器

p115client.tool.export_dir.export_dir_parse_iter(client: str | PathLike | P115Client, export_id: int | str = 0, parse_iter: None | Literal['depth_name', 'dict', 'path', 'patht'] | Callable[[Iterable[str]], Iterable] = 'path', delete: bool = False, app: str = 'web', *, async_: Literal[False] = False, **request_kwargs) Iterator[source]
p115client.tool.export_dir.export_dir_parse_iter(client: str | PathLike | P115Client, export_id: int | str = 0, parse_iter: None | Literal['depth_name', 'dict', 'path', 'patht'] | Callable[[AsyncIterable[str]], AsyncIterable] = 'path', delete: bool = False, app: str = 'web', *, async_: Literal[True], **request_kwargs) AsyncIterator

解析且按行遍历【导出目录树】生成的文件,并返回迭代器

Parameters:
  • client – 115 客户端或 cookies

  • export_id – 【导出目录树】的任务 id、文件 id 或 文件 pickcode

  • parse_iter

    解析每一行目录树记录,并返回迭代器

    • None: 直接原样返回每一行

    • ”depth_name”: 使用 export_dir_parse_iter_depth_name

    • ”dict”: 使用 export_dir_parse_dict

    • ”path”: 使用 export_dir_parse_iter_path

    • ”patht”: 使用 export_dir_parse_iter_patht

    • Callable: 自定义解析函数

  • delete

    是否在完成后删除文件

    • True: 删除

    • False: 保留

  • app – 使用指定 app(设备)的接口

  • async – 是否异步

  • request_kwargs – 其它请求参数

Returns:

解析目录树文件的迭代器

p115client.tool.export_dir.export_dir_parse_iter_dict(iterable: Iterable[str], /) Iterator[dict][source]
p115client.tool.export_dir.export_dir_parse_iter_dict(iterable: AsyncIterable[str], /) AsyncIterator[dict]

解析 115 导出的目录树(可通过 P115Client.fs_export_dir 提交导出任务)

Parameters:

iterable – 迭代器,每次返回一行

Returns:

把每一行解析为一个字典,迭代返回,格式为

{
    "id":        int, # 序号
    "parent_id": int, # 上级目录的序号
    "depth":     int, # 深度
    "name":      str, # 名字
}

p115client.tool.export_dir.export_dir_parse_iter_path(iterable: Iterable[str], /, escape: None | bool | Callable[[str], str] = None) Iterator[str][source]
p115client.tool.export_dir.export_dir_parse_iter_path(iterable: AsyncIterable[str], /, escape: None | bool | Callable[[str], str] = None) AsyncIterator[str]

解析 115 导出的目录树(可通过 P115Client.fs_export_dir 提交导出任务)

Parameters:
  • iterable – 迭代器,每次返回一行

  • escape

    对文件名进行转义

    • 如果为 None,则不处理;否则,这个函数用来对文件名中某些符号进行转义,例如 “/” 等

    • 如果为 True,则使用 posixpatht.escape,会对文件名中 “/”,或单独出现的 “.” 和 “..” 用 “" 进行转义

    • 如果为 False,则使用 posix_escape_name 函数对名字进行转义,会把文件名中的 “/” 转换为 “|”

    • 如果为 Callable,则用你所提供的调用,以或者转义后的名字

Returns:

把每一行解析为一个路径,并逐次迭代返回

p115client.tool.export_dir.export_dir_parse_iter_patht(iterable: Iterable[str], /) Iterator[list[str]][source]
p115client.tool.export_dir.export_dir_parse_iter_patht(iterable: AsyncIterable[str], /) AsyncIterator[list[str]]

解析 115 导出的目录树(可通过 P115Client.fs_export_dir 提交导出任务)

Parameters:

iterable – 迭代器,每次返回一行

Returns:

把每一行解析为一个名字列表,并逐次迭代返回

p115client.tool.export_dir.export_dir_result(client: str | PathLike | P115Client, export_id: int | str, timeout: None | int | float = None, check_interval: int | float = 1, app: str = 'web', *, async_: Literal[False] = False, **request_kwargs) dict[source]
p115client.tool.export_dir.export_dir_result(client: str | PathLike | P115Client, export_id: int | str, timeout: None | int | float = None, check_interval: int | float = 1, app: str = 'web', *, async_: Literal[True], **request_kwargs) Coroutine[Any, Any, dict]

获取【导出目录树】的结果

Attention

如果指定超时时间为正数,则会在过期时抛出 TimeoutError,但这并不会取消远程正在执行的任务,而 115 同时只允许运行一个导出目录树的任务,所以如果要开始下一个导出任务,还需要此任务完成或者被 115 自动超时取消

Parameters:
  • client – 115 客户端或 cookies

  • export_id – 任务 id,由 P115Client.fs_export_dir 接口调用产生

  • timeout – 超时秒数,如果为 None 或 小于等于 0,则相当于 float(“inf”),即永不超时

  • check_interval – 两次轮询之间的等待秒数,如果 <= 0,则不等待

  • app – 使用指定 app(设备)的接口

  • async – 是否异步

  • request_kwargs – 其它请求参数

Returns:

接口返回结果,格式为

{
    "export_id": str, # 任务 id
    "file_id":   str, # 导出文件的 id
    "file_name": str, # 导出文件的名字
    "pick_code": str  # 导出文件的提取码
}

p115client.tool.export_dir.export_dir_start(client: str | PathLike | P115Client, file_ids: int | str | Iterable[int | str] = 0, target: int | str = 0, layer_limit: int = 0, app: str = 'web', *, async_: Literal[False] = False, **request_kwargs) int[source]
p115client.tool.export_dir.export_dir_start(client: str | PathLike | P115Client, file_ids: int | str | Iterable[int | str] = 0, target: int | str = 0, layer_limit: int = 0, app: str = 'web', *, async_: Literal[True], **request_kwargs) Coroutine[Any, Any, int]

开始【导出目录树】任务

Parameters:
  • client – 115 客户端或 cookies

  • file_ids – 待导出的目录 id 或 pickcode

  • target – 导出到的目标目录 id 或 pickcode 或 target(格式为 f”U_{aid}_{pid}”)

  • layer_limit – 层级深度,取值范围 0~25

  • app – 使用指定 app(设备)的接口

  • async – 是否异步

  • request_kwargs – 其它请求参数

Returns:

返回任务 id,可用 P115Client.fs_export_dir_status 查询进度

p115client.tool.export_dir.export_dir_status(client: str | PathLike | P115Client, export_id: int | str, app: str = 'web', *, async_: Literal[False] = False, **request_kwargs) dict[source]
p115client.tool.export_dir.export_dir_status(client: str | PathLike | P115Client, export_id: int | str, app: str = 'web', *, async_: Literal[True], **request_kwargs) Coroutine[Any, Any, dict]

【导出目录树】的任务状态

Parameters:
  • client – 115 客户端或 cookies

  • export_id – 任务 id,由 P115Client.fs_export_dir 接口调用产生

  • app – 使用指定 app(设备)的接口

  • async – 是否异步

  • request_kwargs – 其它请求参数

Returns:

接口返回结果,如果任务完成,格式为

{
    "export_id": str, # 任务 id
    "file_id":   str, # 导出文件的 id
    "file_name": str, # 导出文件的名字
    "pick_code": str  # 导出文件的提取码
}