util¶
一些工具函数
这个模块提供了一些工具函数,且不依赖于 p115client.client 中的实现
- p115client.util.complete_url(path: str | Callable[[], str] = '', /, base_url: str | Callable[[], str] = '', app: str | Callable[[], str] = '', domain: str | Callable[[], str] = '', as_query: bool = False, query: Mapping[str, Any] | Sequence[tuple[str, Any]] = ()) str[source]¶
完整 HTTP Web 接口 URL
- Parameters:
path – 请求路径
base_url – 请求基地址,例如 https://webapi.115.com
app – 使用此设备 app 的接口
domain –
域,拼接位置根据 base_url 和 as_query 确定
如果 base_url 为空,那么 base_url 会被处理为 http://{domain}.115.com
如果 as_query 为 False,那么拼接到 base_url 之后
如果 as_query 为 True,那么拼接到 query 之中
as_query –
是否把 path 参数视为查询参数
如果为 False,则拼接到 base_url 之后
如果为 True,则拼接到 query 之中
query – 其它查询参数
- Returns:
接口 URL
Note
大概有以下几种接口 URL
https://115.com{path}?{query}
https://{domain}.115.com{path}?{query}
https://115cdn.com/{domain}{path}?{query}
https://115vod.com/{domain}{path}?{query}
https://f.115.com/api/proxy/115?domain={domain}&path={path}&{query}
https://n.115.com/api/proxy/115?domain={domain}&path={path}&{query}
其中 https://f.115.com 和 https://n.115.com 可以拼接查询参数 domain,默认值是 “webapi”
- p115client.util.determine_part_size(size: int, min_part_size: int = 10485760, max_part_count: int = 10000) int[source]¶
确定分片上传(multipart upload)时的分片大小
- Parameters:
size – 数据大小
min_part_size – 用户期望的分片大小
max_part_count – 最大的分片个数
- Returns:
分片大小
- p115client.util.is_valid_pickcode(pickcode: str, /) bool[source]¶
是否合法的 pickcode
- Parameters:
pickcode – 提取码
- Returns:
是否合法
- p115client.util.load_final_image(url: str, async_: Literal[False] = False, request=request) HTTPStatus | str[source]¶
- p115client.util.load_final_image(url: str, async_: Literal[True], request=request) Coroutine[Any, Any, HTTPStatus | str]
逐次 3XX 重定向,以获取最终的图片链接
- Parameters:
url – 图片链接
async – 是否异步
- Returns:
最终的图片链接(如果期间发生错误,则返回 None)
- p115client.util.max_image_quality(url: str, /) str[source]¶
将图片的链接调整为最高画质
- Parameters:
url – 图片缩略图链接
- Returns:
调整后的链接
- p115client.util.posix_escape_name(name: str, /, repl: str = '|') str[source]¶
把文件名中的 “/” 转换为另一个字符
Note
默认把 “/” 替换成 “|”,借鉴 alist。 更一般的,可借鉴 MacOSX,替换成 “:”。
- Parameters:
name – 文件名
repl – 替换为的目标字符
- Returns:
替换后的名字
- p115client.util.reduce_image_url_layers(url: str, /, size: str | int = '') str[source]¶
从图片的缩略图链接中提取信息,以减少一次 302 访问
- Parameters:
url – 图片缩略图链接
size – 图片规格大小,如果为 0,则是原图大小
- Returns:
提取后的图片缩略图链接
从链接中提取 share_code 和 receive_code
- Parameters:
link – 分享链接
- Returns:
链接信息,是一个字典,包含 2 个 key - “share_code”: 分享码 - “receive_code”: 提取码
Note
分享链接主要有如下几种格式:
https://115cdn.com/s/{share_code}?password={receive_code}
https://115.com/s/{share_code}?password={receive_code}
https://share.115.com/{share_code}?password={receive_code}
{share_code}-{receive_code}
/{share_code}-{receive_code}/
#{share_code}-{receive_code}#