util¶
一些工具函数
这个模块提供了一些工具函数,且不依赖于 p115client.client 中的实现
- p115client.util.complete_url(path: str | Callable[[], str] = '', /, base_url: str | Callable[[], str] = '', app: str | Callable[[], str] = '', version: str = '', force_app: bool | Container[str] = False, domain: str | Callable[[], str] = '', query: str | Mapping[str, Any] | Sequence[tuple[str, Any]] = ()) str[source]¶
完整 HTTP Web 接口 URL
- Parameters:
path – 请求路径
base_url – 请求基地址,例如 “https://webapi.115.com”
app – 使用此设备 app 的接口
version – 接口版本,会作为
path的前缀force_app – 如果为 False(默认),则会对某些不在接受范围内的 app 改用可接受的值,如果为 True 则保持原样(传什么就用什么),如果为容器,则此容器内的
app也会被采用domain – 域,如果 base_url 为空,那么 base_url 会被处理为 f”http://{domain}.115.com”
query – 其它查询参数
- Returns:
接口 URL
Note
大概有以下几种接口 URL
f”https://115.com{path}?{query}”
f”https://{domain}.115.com{path}?{query}”
f”https://115cdn.com/{domain}{path}?{query}”
f”https://115vod.com/{domain}{path}?{query}”
f”https://f.115.com/api/proxy/115?domain={domain}&path={path}&{query}”
f”https://n.115.com/api/proxy/115?domain={domain}&path={path}&{query}”
其中 “https://f.115.com” 和 “https://n.115.com” 可以拼接查询参数
domain,默认值是 “webapi”,请求时需要携带 “origin” 头。 而曾经的 “http://anxia.com” 和 “http://v.anxia.com” 已经不可用了。
- 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}#