p115dav


Namep115dav JSON
Version 0.0.2.2 PyPI version JSON
download
home_pagehttps://github.com/ChenyangGao/web-mount-packs/tree/main/python-module/p115dav
Summary115 网盘 WebDAV 和 302 直链程序.
upload_time2024-11-25 13:44:35
maintainerNone
docs_urlNone
authorChenyangGao
requires_python<4.0,>=3.12
licenseMIT
keywords python-115 webdav
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.98204s