# 115 网盘 WebDAV 和 302 直链程序.
## 安装
你可以通过 [pypi](https://pypi.org/project/p115dav/) 安装
```console
pip install -U p115dav
```
## 用法
### 命令行使用
```console
$ p115dav -h
usage: p115dav [-h] [-cp COOKIES_PATH] [-o STRM_ORIGIN] [-t TTL] [-p1 PREDICATE]
[-t1 {ignore,ignore-file,expr,lambda,stmt,module,file,re}] [-p2 STRM_PREDICATE]
[-t2 {filter,filter-file,expr,lambda,stmt,module,file,re}] [-fs] [-H HOST] [-P PORT] [-d] [-ass]
[-uc UVICORN_RUN_CONFIG_PATH] [-wc WSGIDAV_CONFIG_PATH] [-l] [-v]
[dbfile]
🕸️ 115 网盘 WebDAV 和 302 直链程序 🕷️
positional arguments:
dbfile sqlite 数据库文件路径或 URI,如果不传,则自动创建临时文件
options:
-h, --help show this help message and exit
-cp COOKIES_PATH, --cookies-path COOKIES_PATH
cookies 文件保存路径,默认为当前工作目录下的 115-cookies.txt
如果你需要直接传入一个 cookies 字符串,需要这样写
.. code:: shell
COOKIES='UID=...; CID=..., SEID=...'
p115dav --cookies-path <(echo "$COOKIES")
-o STRM_ORIGIN, --strm-origin STRM_ORIGIN
[WEBDAV] origin 或者说 base_url,用来拼接路径,获取完整链接,默认行为是自行确定
-t TTL, --ttl TTL 缓存存活时间
- 如果等于 0(默认值),则总是更新
- 如果为 nan、inf 或者小于 0,则永远存活
- 如果大于 0,则存活这么久时间
-p1 PREDICATE, --predicate PREDICATE
[WEBDAV] 断言,当断言的结果为 True 时,文件或目录会被显示
-t1 {ignore,ignore-file,expr,lambda,stmt,module,file,re}, --predicate-type {ignore,ignore-file,expr,lambda,stmt,module,file,re}
[webdav] 断言类型,默认值为 'ignore'
- ignore (默认值)gitignore 配置文本(有多个时用空格隔开),在文件路径上执行模式匹配,匹配成功则断言为 False
NOTE: https://git-scm.com/docs/gitignore#_pattern_format
- ignore-file 接受一个文件路径,包含 gitignore 的配置文本(一行一个),在文件路径上执行模式匹配,匹配成功则断言为 False
NOTE: https://git-scm.com/docs/gitignore#_pattern_format
- expr 表达式,会注入一个名为 path 的类 pathlib.Path 对象
- lambda lambda 函数,接受一个类 pathlib.Path 对象作为参数
- stmt 语句,当且仅当不抛出异常,则视为 True,会注入一个名为 path 的类 pathlib.Path 对象
- module 模块,运行后需要在它的全局命名空间中生成一个 check 或 predicate 函数用于断言,接受一个类 pathlib.Path 对象作为参数
- file 文件路径,运行后需要在它的全局命名空间中生成一个 check 或 predicate 函数用于断言,接受一个类 pathlib.Path 对象作为参数
- re 正则表达式,模式匹配,如果文件的名字匹配此模式,则断言为 True
-p2 STRM_PREDICATE, --strm-predicate STRM_PREDICATE
[webdav] strm 断言(优先级高于 -p1/--predicate),当断言的结果为 True 时,文件会被显示为带有 .strm 后缀的文本文件,打开后是链接
-t2 {filter,filter-file,expr,lambda,stmt,module,file,re}, --strm-predicate-type {filter,filter-file,expr,lambda,stmt,module,file,re}
[webdav] 断言类型,默认值为 'filter'
- filter (默认值)gitignore 配置文本(有多个时用空格隔开),在文件路径上执行模式匹配,匹配成功则断言为 True
请参考:https://git-scm.com/docs/gitignore#_pattern_format
- filter-file 接受一个文件路径,包含 gitignore 的配置文本(一行一个),在文件路径上执行模式匹配,匹配成功则断言为 True
请参考:https://git-scm.com/docs/gitignore#_pattern_format
- expr 表达式,会注入一个名为 path 的类 pathlib.Path 对象
- lambda lambda 函数,接受一个类 pathlib.Path 对象作为参数
- stmt 语句,当且仅当不抛出异常,则视为 True,会注入一个名为 path 的类 pathlib.Path 对象
- module 模块,运行后需要在它的全局命名空间中生成一个 check 或 predicate 函数用于断言,接受一个类 pathlib.Path 对象作为参数
- file 文件路径,运行后需要在它的全局命名空间中生成一个 check 或 predicate 函数用于断言,接受一个类 pathlib.Path 对象作为参数
- re 正则表达式,模式匹配,如果文件的名字匹配此模式,则断言为 True
-fs, --fast-strm 快速实现 媒体筛选 和 虚拟 strm,此命令优先级较高,相当于命令行指定
--strm-predicate-type expr \
--strm-predicate '(
path.media_type.startswith(("video/", "audio/")) and
path.suffix.lower() != ".ass" or
path.suffix.lower() in (".divx", ".iso", ".m2ts", ".swf", ".xvid")
)' \
--predicate-type expr \
--predicate '(
path.is_dir() or
path.media_type.startswith("image/") or
path.suffix.lower() in (".nfo", ".ass", ".ssa", ".srt", ".idx", ".sub", ".txt", ".vtt", ".smi")
)'
-H HOST, --host HOST ip 或 hostname,默认值:'0.0.0.0'
-P PORT, --port PORT 端口号,默认值:8000,如果为 0 则自动确定
-d, --debug 启用 debug 模式,当文件变动时自动重启 + 输出详细的错误信息
-ass, --load-libass 加载 libass.js,实现 ass/ssa 字幕特效
-uc UVICORN_RUN_CONFIG_PATH, --uvicorn-run-config-path UVICORN_RUN_CONFIG_PATH
uvicorn 启动时的配置文件路径,会作为关键字参数传给 `uvicorn.run`,支持 JSON、YAML 或 TOML 格式,会根据扩展名确定,不能确定时视为 JSON
-wc WSGIDAV_CONFIG_PATH, --wsgidav-config-path WSGIDAV_CONFIG_PATH
WsgiDAV 启动时的配置文件路径,支持 JSON、YAML 或 TOML 格式,会根据扩展名确定,不能确定时视为 JSON
如需样板文件,请阅读:
https://wsgidav.readthedocs.io/en/latest/user_guide_configure.html#sample-wsgidav-yaml
-l, --license 输出授权信息
-v, --version 输出版本号
---------- 使用说明 ----------
你可以打开浏览器进行直接访问。
1. 如果想要访问某个路径,可以通过查询接口
GET /{path}
GET /<share/{path}
或者
GET ?path={path}
也可以通过 pickcode 查询(对于分享无效)
GET ?pickcode={pickcode}
也可以通过 id 查询
GET ?id={id}
也可以通过 sha1 查询(必是文件)(对于分享无效)
GET ?sha1={sha1}
2. 查询文件或文件夹的信息,返回 json
GET /<attr
GET /<share/<attr
3. 查询文件夹内所有文件和文件夹的信息,返回 json
GET /<list
GET /<share/<list
4. 获取文件的下载链接
GET /<url
GET /<share/<url
5. 说明是否文件(如果不传此参数,则需要额外做一个检测)
💡 是文件
GET ?file=true
💡 是目录
GET ?file=false
6. 支持的查询参数
参数 | 类型 | 必填 | 说明
---------------- | ------- | ---- | ----------
?pickcode={path} | string | 否 | 文件或文件夹的 pickcode,优先级高于 id
?id={id} | integer | 否 | 文件或文件夹的 id,优先级高于 sha1
?sha1={sha1} | string | 否 | 文件或文件夹的 id,优先级高于 path
?path={path} | string | 否 | 文件或文件夹的路径,优先级高于 url 中的路径部分
/{path} | string | 否 | 文件或文件夹的路径,位于 url 中的路径部分
💡 如果是分享 (路由路径以 /<share 开始),则支持的参数会少一些
参数 | 类型 | 必填 | 说明
------------ | ------- | ---- | ----------
?id={id} | integer | 否 | 文件或文件夹的 id,优先级高于 sha1
?sha1={sha1} | string | 否 | 文件或文件夹的 id,优先级高于 path
?path={path} | string | 否 | 文件或文件夹的路径,优先级高于 url 中的路径部分
/{path} | string | 否 | 文件或文件夹的路径,位于 url 中的路径部分
当文件被下载时,可以有其它查询参数
参数 | 类型 | 必填 | 说明
--------- | ------- | ---- | ----------
image | boolean | 否 | 文件是图片,可获取 CDN 链接
web | boolean | 否 | 使用 web 接口获取下载链接(文件由服务器代理转发,不走 302)
7. 支持 webdav
在浏览器或 webdav 挂载软件 中输入
http://localhost:8000/<dav
默认没有用户名和密码,支持 302
8. 支持分享列表
在浏览器中输入
http://localhost:8000/<share
在浏览器或 webdav 挂载软件 中输入
http://localhost:8000/<dav/<share
```
Raw data
{
"_id": null,
"home_page": "https://github.com/ChenyangGao/web-mount-packs/tree/main/python-module/p115dav",
"name": "p115dav",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": null,
"keywords": "python-115, webdav",
"author": "ChenyangGao",
"author_email": "wosiwujm@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/96/aa/5f1648d615d858dd0ba48314cab097e00ebd27c61e93a73b51fa6cdde20d/p115dav-0.0.2.2.tar.gz",
"platform": null,
"description": "# 115 \u7f51\u76d8 WebDAV \u548c 302 \u76f4\u94fe\u7a0b\u5e8f.\n\n## \u5b89\u88c5\n\n\u4f60\u53ef\u4ee5\u901a\u8fc7 [pypi](https://pypi.org/project/p115dav/) \u5b89\u88c5\n\n```console\npip install -U p115dav\n```\n\n## \u7528\u6cd5\n\n### \u547d\u4ee4\u884c\u4f7f\u7528\n\n```console\n$ p115dav -h\nusage: p115dav [-h] [-cp COOKIES_PATH] [-o STRM_ORIGIN] [-t TTL] [-p1 PREDICATE]\n [-t1 {ignore,ignore-file,expr,lambda,stmt,module,file,re}] [-p2 STRM_PREDICATE]\n [-t2 {filter,filter-file,expr,lambda,stmt,module,file,re}] [-fs] [-H HOST] [-P PORT] [-d] [-ass]\n [-uc UVICORN_RUN_CONFIG_PATH] [-wc WSGIDAV_CONFIG_PATH] [-l] [-v]\n [dbfile]\n\n \ud83d\udd78\ufe0f 115 \u7f51\u76d8 WebDAV \u548c 302 \u76f4\u94fe\u7a0b\u5e8f \ud83d\udd77\ufe0f\n\npositional arguments:\n dbfile sqlite \u6570\u636e\u5e93\u6587\u4ef6\u8def\u5f84\u6216 URI\uff0c\u5982\u679c\u4e0d\u4f20\uff0c\u5219\u81ea\u52a8\u521b\u5efa\u4e34\u65f6\u6587\u4ef6\n\noptions:\n -h, --help show this help message and exit\n -cp COOKIES_PATH, --cookies-path COOKIES_PATH\n cookies \u6587\u4ef6\u4fdd\u5b58\u8def\u5f84\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e0b\u7684 115-cookies.txt\n \u5982\u679c\u4f60\u9700\u8981\u76f4\u63a5\u4f20\u5165\u4e00\u4e2a cookies \u5b57\u7b26\u4e32\uff0c\u9700\u8981\u8fd9\u6837\u5199\n \n .. code:: shell\n \n COOKIES='UID=...; CID=..., SEID=...'\n p115dav --cookies-path <(echo \"$COOKIES\")\n \n -o STRM_ORIGIN, --strm-origin STRM_ORIGIN\n [WEBDAV] origin \u6216\u8005\u8bf4 base_url\uff0c\u7528\u6765\u62fc\u63a5\u8def\u5f84\uff0c\u83b7\u53d6\u5b8c\u6574\u94fe\u63a5\uff0c\u9ed8\u8ba4\u884c\u4e3a\u662f\u81ea\u884c\u786e\u5b9a\n -t TTL, --ttl TTL \u7f13\u5b58\u5b58\u6d3b\u65f6\u95f4\n - \u5982\u679c\u7b49\u4e8e 0\uff08\u9ed8\u8ba4\u503c\uff09\uff0c\u5219\u603b\u662f\u66f4\u65b0\n - \u5982\u679c\u4e3a nan\u3001inf \u6216\u8005\u5c0f\u4e8e 0\uff0c\u5219\u6c38\u8fdc\u5b58\u6d3b\n - \u5982\u679c\u5927\u4e8e 0\uff0c\u5219\u5b58\u6d3b\u8fd9\u4e48\u4e45\u65f6\u95f4\n -p1 PREDICATE, --predicate PREDICATE\n [WEBDAV] \u65ad\u8a00\uff0c\u5f53\u65ad\u8a00\u7684\u7ed3\u679c\u4e3a True \u65f6\uff0c\u6587\u4ef6\u6216\u76ee\u5f55\u4f1a\u88ab\u663e\u793a\n -t1 {ignore,ignore-file,expr,lambda,stmt,module,file,re}, --predicate-type {ignore,ignore-file,expr,lambda,stmt,module,file,re}\n [webdav] \u65ad\u8a00\u7c7b\u578b\uff0c\u9ed8\u8ba4\u503c\u4e3a 'ignore'\n - ignore \uff08\u9ed8\u8ba4\u503c\uff09gitignore \u914d\u7f6e\u6587\u672c\uff08\u6709\u591a\u4e2a\u65f6\u7528\u7a7a\u683c\u9694\u5f00\uff09\uff0c\u5728\u6587\u4ef6\u8def\u5f84\u4e0a\u6267\u884c\u6a21\u5f0f\u5339\u914d\uff0c\u5339\u914d\u6210\u529f\u5219\u65ad\u8a00\u4e3a False\n NOTE: https://git-scm.com/docs/gitignore#_pattern_format\n - ignore-file \u63a5\u53d7\u4e00\u4e2a\u6587\u4ef6\u8def\u5f84\uff0c\u5305\u542b gitignore \u7684\u914d\u7f6e\u6587\u672c\uff08\u4e00\u884c\u4e00\u4e2a\uff09\uff0c\u5728\u6587\u4ef6\u8def\u5f84\u4e0a\u6267\u884c\u6a21\u5f0f\u5339\u914d\uff0c\u5339\u914d\u6210\u529f\u5219\u65ad\u8a00\u4e3a False\n NOTE: https://git-scm.com/docs/gitignore#_pattern_format\n - expr \u8868\u8fbe\u5f0f\uff0c\u4f1a\u6ce8\u5165\u4e00\u4e2a\u540d\u4e3a path \u7684\u7c7b pathlib.Path \u5bf9\u8c61\n - lambda lambda \u51fd\u6570\uff0c\u63a5\u53d7\u4e00\u4e2a\u7c7b pathlib.Path \u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\n - stmt \u8bed\u53e5\uff0c\u5f53\u4e14\u4ec5\u5f53\u4e0d\u629b\u51fa\u5f02\u5e38\uff0c\u5219\u89c6\u4e3a True\uff0c\u4f1a\u6ce8\u5165\u4e00\u4e2a\u540d\u4e3a path \u7684\u7c7b pathlib.Path \u5bf9\u8c61\n - module \u6a21\u5757\uff0c\u8fd0\u884c\u540e\u9700\u8981\u5728\u5b83\u7684\u5168\u5c40\u547d\u540d\u7a7a\u95f4\u4e2d\u751f\u6210\u4e00\u4e2a check \u6216 predicate \u51fd\u6570\u7528\u4e8e\u65ad\u8a00\uff0c\u63a5\u53d7\u4e00\u4e2a\u7c7b pathlib.Path \u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\n - file \u6587\u4ef6\u8def\u5f84\uff0c\u8fd0\u884c\u540e\u9700\u8981\u5728\u5b83\u7684\u5168\u5c40\u547d\u540d\u7a7a\u95f4\u4e2d\u751f\u6210\u4e00\u4e2a check \u6216 predicate \u51fd\u6570\u7528\u4e8e\u65ad\u8a00\uff0c\u63a5\u53d7\u4e00\u4e2a\u7c7b pathlib.Path \u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\n - re \u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u6a21\u5f0f\u5339\u914d\uff0c\u5982\u679c\u6587\u4ef6\u7684\u540d\u5b57\u5339\u914d\u6b64\u6a21\u5f0f\uff0c\u5219\u65ad\u8a00\u4e3a True\n -p2 STRM_PREDICATE, --strm-predicate STRM_PREDICATE\n [webdav] strm \u65ad\u8a00\uff08\u4f18\u5148\u7ea7\u9ad8\u4e8e -p1/--predicate\uff09\uff0c\u5f53\u65ad\u8a00\u7684\u7ed3\u679c\u4e3a True \u65f6\uff0c\u6587\u4ef6\u4f1a\u88ab\u663e\u793a\u4e3a\u5e26\u6709 .strm \u540e\u7f00\u7684\u6587\u672c\u6587\u4ef6\uff0c\u6253\u5f00\u540e\u662f\u94fe\u63a5\n -t2 {filter,filter-file,expr,lambda,stmt,module,file,re}, --strm-predicate-type {filter,filter-file,expr,lambda,stmt,module,file,re}\n [webdav] \u65ad\u8a00\u7c7b\u578b\uff0c\u9ed8\u8ba4\u503c\u4e3a 'filter'\n - filter \uff08\u9ed8\u8ba4\u503c\uff09gitignore \u914d\u7f6e\u6587\u672c\uff08\u6709\u591a\u4e2a\u65f6\u7528\u7a7a\u683c\u9694\u5f00\uff09\uff0c\u5728\u6587\u4ef6\u8def\u5f84\u4e0a\u6267\u884c\u6a21\u5f0f\u5339\u914d\uff0c\u5339\u914d\u6210\u529f\u5219\u65ad\u8a00\u4e3a True\n \u8bf7\u53c2\u8003\uff1ahttps://git-scm.com/docs/gitignore#_pattern_format\n - filter-file \u63a5\u53d7\u4e00\u4e2a\u6587\u4ef6\u8def\u5f84\uff0c\u5305\u542b gitignore \u7684\u914d\u7f6e\u6587\u672c\uff08\u4e00\u884c\u4e00\u4e2a\uff09\uff0c\u5728\u6587\u4ef6\u8def\u5f84\u4e0a\u6267\u884c\u6a21\u5f0f\u5339\u914d\uff0c\u5339\u914d\u6210\u529f\u5219\u65ad\u8a00\u4e3a True\n \u8bf7\u53c2\u8003\uff1ahttps://git-scm.com/docs/gitignore#_pattern_format\n - expr \u8868\u8fbe\u5f0f\uff0c\u4f1a\u6ce8\u5165\u4e00\u4e2a\u540d\u4e3a path \u7684\u7c7b pathlib.Path \u5bf9\u8c61\n - lambda lambda \u51fd\u6570\uff0c\u63a5\u53d7\u4e00\u4e2a\u7c7b pathlib.Path \u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\n - stmt \u8bed\u53e5\uff0c\u5f53\u4e14\u4ec5\u5f53\u4e0d\u629b\u51fa\u5f02\u5e38\uff0c\u5219\u89c6\u4e3a True\uff0c\u4f1a\u6ce8\u5165\u4e00\u4e2a\u540d\u4e3a path \u7684\u7c7b pathlib.Path \u5bf9\u8c61\n - module \u6a21\u5757\uff0c\u8fd0\u884c\u540e\u9700\u8981\u5728\u5b83\u7684\u5168\u5c40\u547d\u540d\u7a7a\u95f4\u4e2d\u751f\u6210\u4e00\u4e2a check \u6216 predicate \u51fd\u6570\u7528\u4e8e\u65ad\u8a00\uff0c\u63a5\u53d7\u4e00\u4e2a\u7c7b pathlib.Path \u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\n - file \u6587\u4ef6\u8def\u5f84\uff0c\u8fd0\u884c\u540e\u9700\u8981\u5728\u5b83\u7684\u5168\u5c40\u547d\u540d\u7a7a\u95f4\u4e2d\u751f\u6210\u4e00\u4e2a check \u6216 predicate \u51fd\u6570\u7528\u4e8e\u65ad\u8a00\uff0c\u63a5\u53d7\u4e00\u4e2a\u7c7b pathlib.Path \u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\n - re \u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u6a21\u5f0f\u5339\u914d\uff0c\u5982\u679c\u6587\u4ef6\u7684\u540d\u5b57\u5339\u914d\u6b64\u6a21\u5f0f\uff0c\u5219\u65ad\u8a00\u4e3a True\n -fs, --fast-strm \u5feb\u901f\u5b9e\u73b0 \u5a92\u4f53\u7b5b\u9009 \u548c \u865a\u62df strm\uff0c\u6b64\u547d\u4ee4\u4f18\u5148\u7ea7\u8f83\u9ad8\uff0c\u76f8\u5f53\u4e8e\u547d\u4ee4\u884c\u6307\u5b9a\n \n --strm-predicate-type expr \\\n --strm-predicate '(\n path.media_type.startswith((\"video/\", \"audio/\")) and\n path.suffix.lower() != \".ass\" or\n path.suffix.lower() in (\".divx\", \".iso\", \".m2ts\", \".swf\", \".xvid\")\n )' \\\n --predicate-type expr \\\n --predicate '(\n path.is_dir() or\n path.media_type.startswith(\"image/\") or\n path.suffix.lower() in (\".nfo\", \".ass\", \".ssa\", \".srt\", \".idx\", \".sub\", \".txt\", \".vtt\", \".smi\")\n )'\n \n -H HOST, --host HOST ip \u6216 hostname\uff0c\u9ed8\u8ba4\u503c\uff1a'0.0.0.0'\n -P PORT, --port PORT \u7aef\u53e3\u53f7\uff0c\u9ed8\u8ba4\u503c\uff1a8000\uff0c\u5982\u679c\u4e3a 0 \u5219\u81ea\u52a8\u786e\u5b9a\n -d, --debug \u542f\u7528 debug \u6a21\u5f0f\uff0c\u5f53\u6587\u4ef6\u53d8\u52a8\u65f6\u81ea\u52a8\u91cd\u542f + \u8f93\u51fa\u8be6\u7ec6\u7684\u9519\u8bef\u4fe1\u606f\n -ass, --load-libass \u52a0\u8f7d libass.js\uff0c\u5b9e\u73b0 ass/ssa \u5b57\u5e55\u7279\u6548\n -uc UVICORN_RUN_CONFIG_PATH, --uvicorn-run-config-path UVICORN_RUN_CONFIG_PATH\n uvicorn \u542f\u52a8\u65f6\u7684\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\uff0c\u4f1a\u4f5c\u4e3a\u5173\u952e\u5b57\u53c2\u6570\u4f20\u7ed9 `uvicorn.run`\uff0c\u652f\u6301 JSON\u3001YAML \u6216 TOML \u683c\u5f0f\uff0c\u4f1a\u6839\u636e\u6269\u5c55\u540d\u786e\u5b9a\uff0c\u4e0d\u80fd\u786e\u5b9a\u65f6\u89c6\u4e3a JSON\n -wc WSGIDAV_CONFIG_PATH, --wsgidav-config-path WSGIDAV_CONFIG_PATH\n WsgiDAV \u542f\u52a8\u65f6\u7684\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\uff0c\u652f\u6301 JSON\u3001YAML \u6216 TOML \u683c\u5f0f\uff0c\u4f1a\u6839\u636e\u6269\u5c55\u540d\u786e\u5b9a\uff0c\u4e0d\u80fd\u786e\u5b9a\u65f6\u89c6\u4e3a JSON\n \u5982\u9700\u6837\u677f\u6587\u4ef6\uff0c\u8bf7\u9605\u8bfb\uff1a\n \n https://wsgidav.readthedocs.io/en/latest/user_guide_configure.html#sample-wsgidav-yaml\n \n -l, --license \u8f93\u51fa\u6388\u6743\u4fe1\u606f\n -v, --version \u8f93\u51fa\u7248\u672c\u53f7\n\n---------- \u4f7f\u7528\u8bf4\u660e ----------\n\n\u4f60\u53ef\u4ee5\u6253\u5f00\u6d4f\u89c8\u5668\u8fdb\u884c\u76f4\u63a5\u8bbf\u95ee\u3002\n\n1. \u5982\u679c\u60f3\u8981\u8bbf\u95ee\u67d0\u4e2a\u8def\u5f84\uff0c\u53ef\u4ee5\u901a\u8fc7\u67e5\u8be2\u63a5\u53e3\n\n GET /{path}\n GET /<share/{path}\n\n\u6216\u8005\n\n GET ?path={path}\n\n\u4e5f\u53ef\u4ee5\u901a\u8fc7 pickcode \u67e5\u8be2\uff08\u5bf9\u4e8e\u5206\u4eab\u65e0\u6548\uff09\n\n GET ?pickcode={pickcode}\n\n\u4e5f\u53ef\u4ee5\u901a\u8fc7 id \u67e5\u8be2\n\n GET ?id={id}\n\n\u4e5f\u53ef\u4ee5\u901a\u8fc7 sha1 \u67e5\u8be2\uff08\u5fc5\u662f\u6587\u4ef6\uff09\uff08\u5bf9\u4e8e\u5206\u4eab\u65e0\u6548\uff09\n\n GET ?sha1={sha1}\n\n2. \u67e5\u8be2\u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684\u4fe1\u606f\uff0c\u8fd4\u56de json\n\n GET /<attr\n GET /<share/<attr\n\n3. \u67e5\u8be2\u6587\u4ef6\u5939\u5185\u6240\u6709\u6587\u4ef6\u548c\u6587\u4ef6\u5939\u7684\u4fe1\u606f\uff0c\u8fd4\u56de json\n\n GET /<list\n GET /<share/<list\n\n4. \u83b7\u53d6\u6587\u4ef6\u7684\u4e0b\u8f7d\u94fe\u63a5\n\n GET /<url\n GET /<share/<url\n\n5. \u8bf4\u660e\u662f\u5426\u6587\u4ef6\uff08\u5982\u679c\u4e0d\u4f20\u6b64\u53c2\u6570\uff0c\u5219\u9700\u8981\u989d\u5916\u505a\u4e00\u4e2a\u68c0\u6d4b\uff09\n\n\ud83d\udca1 \u662f\u6587\u4ef6\n\n GET ?file=true\n\n\ud83d\udca1 \u662f\u76ee\u5f55\n\n GET ?file=false\n\n6. \u652f\u6301\u7684\u67e5\u8be2\u53c2\u6570\n\n \u53c2\u6570 | \u7c7b\u578b | \u5fc5\u586b | \u8bf4\u660e\n---------------- | ------- | ---- | ----------\n?pickcode={path} | string | \u5426 | \u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684 pickcode\uff0c\u4f18\u5148\u7ea7\u9ad8\u4e8e id\n?id={id} | integer | \u5426 | \u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684 id\uff0c\u4f18\u5148\u7ea7\u9ad8\u4e8e sha1\n?sha1={sha1} | string | \u5426 | \u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684 id\uff0c\u4f18\u5148\u7ea7\u9ad8\u4e8e path\n?path={path} | string | \u5426 | \u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684\u8def\u5f84\uff0c\u4f18\u5148\u7ea7\u9ad8\u4e8e url \u4e2d\u7684\u8def\u5f84\u90e8\u5206\n/{path} | string | \u5426 | \u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684\u8def\u5f84\uff0c\u4f4d\u4e8e url \u4e2d\u7684\u8def\u5f84\u90e8\u5206\n\n\ud83d\udca1 \u5982\u679c\u662f\u5206\u4eab \uff08\u8def\u7531\u8def\u5f84\u4ee5 /<share \u5f00\u59cb\uff09\uff0c\u5219\u652f\u6301\u7684\u53c2\u6570\u4f1a\u5c11\u4e00\u4e9b\n\n \u53c2\u6570 | \u7c7b\u578b | \u5fc5\u586b | \u8bf4\u660e\n------------ | ------- | ---- | ----------\n?id={id} | integer | \u5426 | \u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684 id\uff0c\u4f18\u5148\u7ea7\u9ad8\u4e8e sha1\n?sha1={sha1} | string | \u5426 | \u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684 id\uff0c\u4f18\u5148\u7ea7\u9ad8\u4e8e path\n?path={path} | string | \u5426 | \u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684\u8def\u5f84\uff0c\u4f18\u5148\u7ea7\u9ad8\u4e8e url \u4e2d\u7684\u8def\u5f84\u90e8\u5206\n/{path} | string | \u5426 | \u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684\u8def\u5f84\uff0c\u4f4d\u4e8e url \u4e2d\u7684\u8def\u5f84\u90e8\u5206\n\n\u5f53\u6587\u4ef6\u88ab\u4e0b\u8f7d\u65f6\uff0c\u53ef\u4ee5\u6709\u5176\u5b83\u67e5\u8be2\u53c2\u6570\n\n \u53c2\u6570 | \u7c7b\u578b | \u5fc5\u586b | \u8bf4\u660e\n--------- | ------- | ---- | ----------\nimage | boolean | \u5426 | \u6587\u4ef6\u662f\u56fe\u7247\uff0c\u53ef\u83b7\u53d6 CDN \u94fe\u63a5\nweb | boolean | \u5426 | \u4f7f\u7528 web \u63a5\u53e3\u83b7\u53d6\u4e0b\u8f7d\u94fe\u63a5\uff08\u6587\u4ef6\u7531\u670d\u52a1\u5668\u4ee3\u7406\u8f6c\u53d1\uff0c\u4e0d\u8d70 302\uff09\n\n7. \u652f\u6301 webdav\n\n\u5728\u6d4f\u89c8\u5668\u6216 webdav \u6302\u8f7d\u8f6f\u4ef6 \u4e2d\u8f93\u5165\n\n http://localhost:8000/<dav\n\n\u9ed8\u8ba4\u6ca1\u6709\u7528\u6237\u540d\u548c\u5bc6\u7801\uff0c\u652f\u6301 302\n\n8. \u652f\u6301\u5206\u4eab\u5217\u8868\n\n\u5728\u6d4f\u89c8\u5668\u4e2d\u8f93\u5165\n\n http://localhost:8000/<share\n\n\u5728\u6d4f\u89c8\u5668\u6216 webdav \u6302\u8f7d\u8f6f\u4ef6 \u4e2d\u8f93\u5165\n\n http://localhost:8000/<dav/<share\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "115 \u7f51\u76d8 WebDAV \u548c 302 \u76f4\u94fe\u7a0b\u5e8f.",
"version": "0.0.2.2",
"project_urls": {
"Homepage": "https://github.com/ChenyangGao/web-mount-packs/tree/main/python-module/p115dav",
"Repository": "https://github.com/ChenyangGao/web-mount-packs/tree/main/python-module/p115dav"
},
"split_keywords": [
"python-115",
" webdav"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "49286d240b2d1787bc56ef3aa8b7ad1b71ca2155d8ed881157dfa9b50fa55843",
"md5": "3c95f82a0fff624e00f4dbe8ff915228",
"sha256": "13a931cd57ad2d8369089c4c22989bb98403019ae7e4f48055cce807bf7ae895"
},
"downloads": -1,
"filename": "p115dav-0.0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3c95f82a0fff624e00f4dbe8ff915228",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 78934,
"upload_time": "2024-11-25T13:44:33",
"upload_time_iso_8601": "2024-11-25T13:44:33.870698Z",
"url": "https://files.pythonhosted.org/packages/49/28/6d240b2d1787bc56ef3aa8b7ad1b71ca2155d8ed881157dfa9b50fa55843/p115dav-0.0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "96aa5f1648d615d858dd0ba48314cab097e00ebd27c61e93a73b51fa6cdde20d",
"md5": "310567db1d72adf55ae62f6081d11463",
"sha256": "bd7709fdc80d09d31c7b41adfbdead6febcee1fbb0cb2a850f2ff677474800af"
},
"downloads": -1,
"filename": "p115dav-0.0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "310567db1d72adf55ae62f6081d11463",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 59588,
"upload_time": "2024-11-25T13:44:35",
"upload_time_iso_8601": "2024-11-25T13:44:35.839076Z",
"url": "https://files.pythonhosted.org/packages/96/aa/5f1648d615d858dd0ba48314cab097e00ebd27c61e93a73b51fa6cdde20d/p115dav-0.0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-25 13:44:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ChenyangGao",
"github_project": "web-mount-packs",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "p115dav"
}