Skip to main content

WebDAV server for AliyunDrive

Project description

aliyundrive-webdav

GitHub Actions PyPI Docker Image aliyundrive-webdav Crates.io

🚀 Help me to become a full-time open-source developer by sponsoring me on GitHub

阿里云盘 WebDAV 服务,主要使用场景为配合支持 WebDAV 协议的客户端 App 如 InfusenPlayer 等实现在电视上直接观看云盘视频内容, 支持客户端 App 直接从阿里云盘获取文件播放而不经过运行本应用的服务器中转, 支持上传文件,但受限于 WebDAV 协议不支持文件秒传。

如果你使用 Emby 或者 Jellyfin,也可以试试 aliyundrive-fuse 项目。

如果项目对你有帮助,请考虑捐赠支持项目持续维护。

Note

本项目作者没有上传需求, 故上传文件功能测试不全面且没有持续迭代计划. 如果你很需要上传功能, 可考虑付费技术支持.

特别赞助

安装

可以从 GitHub Releases 页面下载预先构建的二进制包, 也可以使用 pip 从 PyPI 下载:

pip install aliyundrive-webdav

如果系统支持 Snapcraft 比如 Ubuntu、Debian 等,也可以使用 snap 安装:

sudo snap install aliyundrive-webdav

OpenWrt 路由器

GitHub Releases 中有预编译的 ipk 文件, 目前提供了 aarch64/arm/mipsel/x86_64/i686 等架构的版本,可以下载后使用 opkg 安装,以 nanopi r4s 为例:

wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.0/aliyundrive-webdav_1.10.0-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.0/luci-app-aliyundrive-webdav_1.10.0_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.10.0/luci-i18n-aliyundrive-webdav-zh-cn_1.10.0-1_all.ipk
opkg install aliyundrive-webdav_1.10.0-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_1.10.0_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_1.10.0-1_all.ipk

其它 CPU 架构的路由器可在 GitHub Releases 页面中查找对应的架构的主程序 ipk 文件下载安装, 常见 OpenWrt 路由器 CPU 架构如下表(欢迎补充):

路由器 CPU 架构
nanopi r4s aarch64_generic
小米 AX3600 aarch64_cortex-a53
斐讯 N1 盒子 aarch64_cortex-a53
Newifi D2 mipsel_24kc
Pogoplug arm_mpcore

Tips: 不清楚 CPU 架构类型可通过运行 opkg print-architecture 命令查询。

OpenWrt 配置界面

Koolshare 梅林固件

GitHub Releases 中有预编译包 aliyundrivewebdav-merlin-arm*.tar.gz , 目前提供了旧的 arm380 和兼容 arm384/386 固件的版本,可在下载后在软件中心离线安装。

梅林配置界面

Docker 运行

docker run -d --name=aliyundrive-webdav --restart=unless-stopped -p 8080:8080 \
  -v /etc/aliyundrive-webdav/:/etc/aliyundrive-webdav/ \
  -e REFRESH_TOKEN='your refresh token' \
  -e WEBDAV_AUTH_USER=admin \
  -e WEBDAV_AUTH_PASSWORD=admin \
  messense/aliyundrive-webdav

其中,REFRESH_TOKEN 环境变量为你的阿里云盘 refresh_tokenWEBDAV_AUTH_USERWEBDAV_AUTH_PASSWORD 为连接 WebDAV 服务的用户名和密码。

QNAP 威联通 NAS

QNAP 插件

qnap-aliyunpan-webdav by @iranee.

ContainerStation (Docker)

管理员登陆 NAS 后安装 ContainerStation 并启动服务,在 Management (管理) 标签中 Create Application (新建应用),配置如下

version: '3.3'
services:
  aliyundrive-webdav:
    container_name: aliyundrive-webdav
    restart: unless-stopped
    ports:
      - '8080:8080'
    environment:
      - 'REFRESH_TOKEN=mytoken...'
    image: messense/aliyundrive-webdav

其中 REFRESH_TOKEN 文档最下面说明;:8080 网盘访问映射端口,可以按需改为其他的。

点击 Create (创建)后启动,访问 http://nas地址:8080/ 即可看到你网盘的自动生成索引网页文件。

参考文档

rclone

为了避免重复上传文件,使用 rclone 时推荐使用 Nextcloud WebDAV 模式,可以支持 sha1 checksums. 另外需要配合 --no-update-modtime 参数,否则 rclone 为了更新文件修改时间还是会强制重新上传。

举个例子:

rclone --no-update-modtime copy abc.pdf aliyundrive-nc://docs/

命令行用法

$ aliyundrive-webdav --help
aliyundrive-webdav 1.10.0
WebDAV server for AliyunDrive

USAGE:
    aliyundrive-webdav [OPTIONS]
    aliyundrive-webdav <SUBCOMMAND>

OPTIONS:
        --cache-size <CACHE_SIZE>                    Directory entries cache size [default: 1000]
        --cache-ttl <CACHE_TTL>                      Directory entries cache expiration time in seconds [default: 600]
        --debug                                      Enable debug log
        --domain-id <DOMAIN_ID>                      Aliyun PDS domain id
    -h, --help                                       Print help information
        --host <HOST>                                Listen host [env: HOST=] [default: 0.0.0.0]
    -I, --auto-index                                 Automatically generate index.html
        --no-redirect                                Disable 302 redirect when using app refresh token
        --no-self-upgrade                            Disable self auto upgrade
        --no-trash                                   Delete file permanently instead of trashing it
    -p, --port <PORT>                                Listen port [env: PORT=] [default: 8080]
        --prefer-http-download                       Prefer downloading using HTTP protocol
    -r, --refresh-token <REFRESH_TOKEN>              Aliyun drive refresh token [env: REFRESH_TOKEN=]
        --read-only                                  Enable read only mode
        --root <ROOT>                                Root directory path [default: /]
    -S, --read-buffer-size <READ_BUFFER_SIZE>        Read/download buffer size in bytes, defaults to 10MB [default: 10485760]
        --skip-upload-same-size                      Skip uploading same size file
        --strip-prefix <STRIP_PREFIX>                Prefix to be stripped off when handling request [env: WEBDAV_STRIP_PREFIX=]
        --tls-cert <TLS_CERT>                        TLS certificate file path [env: TLS_CERT=]
        --tls-key <TLS_KEY>                          TLS private key file path [env: TLS_KEY=]
    -U, --auth-user <AUTH_USER>                      WebDAV authentication username [env: WEBDAV_AUTH_USER=]
        --upload-buffer-size <UPLOAD_BUFFER_SIZE>    Upload buffer size in bytes, defaults to 16MB [default: 16777216]
    -V, --version                                    Print version information
    -w, --workdir <WORKDIR>                          Working directory, refresh_token will be stored in there if specified
    -W, --auth-password <AUTH_PASSWORD>              WebDAV authentication password [env: WEBDAV_AUTH_PASSWORD=]

SUBCOMMANDS:
    help    Print this message or the help of the given subcommand(s)
    qr      Scan QRCode

Note

注意:TLS/HTTPS 暂不支持 MIPS 架构。

Note

注意:启用 --skip-upload-same-size 选项虽然能加速上传但可能会导致修改过的同样大小的文件不会被上传

Note

注意:使用 App refresh token 时,WebDAV 客户端请求文件会默认返回 302 重定向而不经过中转。如需中转请启用 --no-redirect 选项。

获取 refresh_token

  • 自动获取: 登录阿里云盘后,控制台粘贴 JSON.parse(localStorage.token).refresh_token

  • 手动获取: 登录阿里云盘后,可以在开发者工具 -> Application -> Local Storage 中的 token 字段中找到。
    注意:不是复制整段 JSON 值,而是 JSON 里 refresh_token 字段的值,如下图所示红色部分: refresh token

  • 命令行获取: aliyundrive-webdav qr login

  • 使用移动端 App refresh token: 需要在其前增加 app: 前缀,如 refresh token 为 abcd 则填入 app:abcd

License

This work is released under the MIT license. A copy of the license is provided in the LICENSE file.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

aliyundrive_webdav-1.10.0-py3-none-win_arm64.whl (3.3 MB view details)

Uploaded Python 3 Windows ARM64

aliyundrive_webdav-1.10.0-py3-none-win_amd64.whl (4.1 MB view details)

Uploaded Python 3 Windows x86-64

aliyundrive_webdav-1.10.0-py3-none-win32.whl (3.8 MB view details)

Uploaded Python 3 Windows x86

aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_x86_64.whl (4.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_i686.whl (4.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_armv7l.whl (3.7 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_aarch64.whl (3.7 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.10.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

aliyundrive_webdav-1.10.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

aliyundrive_webdav-1.10.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

aliyundrive_webdav-1.10.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

aliyundrive_webdav-1.10.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (7.3 MB view details)

Uploaded Python 3 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

aliyundrive_webdav-1.10.0-py3-none-macosx_10_7_x86_64.whl (3.8 MB view details)

Uploaded Python 3 macOS 10.7+ x86-64

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 0a855a109bab9261707599b9c684515dfcc3ad40bca2ab5f7bde026f389e369c
MD5 60aaf8bd0a644e495167b1d53433e27f
BLAKE2b-256 3b6d0e00cd74cbc90513aee1fc9d7964c4629ff4690b2bd60bc557d1f28866b8

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b4e56c1e0ff8e4b64dc870e73c750e6e4807e05a0676803d8c2ef84f5e255069
MD5 9e07812566694afe41c71a0849a5ff9c
BLAKE2b-256 21a55663a2ab0369a18294f52214d7fb8a911563c109db4c8856e46d00aba601

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-win32.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 1db3808a0f4f355a45ca9cc33ee9056795ccac33383a4a1e2c4512d98d531c24
MD5 b453eaec64b3459995080130461a28d4
BLAKE2b-256 c82f61bae759643e7065a70475456f2980ca3cbc0e6f79b0a24f0ef879751c39

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d418d980c119f008d54d0363677775c4ce3780a58b208689b8ee046091b7d90c
MD5 15c0b24114c69c7016ad053c16c87b3d
BLAKE2b-256 3fc01610354223dfc87ca8c76d036a4b4f7e75e1c1963ad102b0abcf05f68620

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 828e3d709e345fcae786937a5c05bd40b1172eb794dc1e2a6031bd2987ea4f3b
MD5 25177b1f181d848397d8eb33cca7a94e
BLAKE2b-256 114615a11f014c96481a3a2e3b20e5ead3b46b68cb07fea97daf1902e9ebb4c2

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 f5c69924ba4ecc04adcf0196e7ae363b2c780541912c30143e3c55b3d6c3d336
MD5 5f9daaac2d8b69ae2aa23ac394b82f6f
BLAKE2b-256 f141e3ec1895b9bf39974b79335ce0837fa9fb6c3ccee0d1800bd2e36118f3a8

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 1627e5d629852280bde8a0203f501c264cc1f559eebaee1b3e71ba5c3e1bffa4
MD5 f5b19275341ead2994eb170e7717ebd0
BLAKE2b-256 ab57885ec7771598df02175d1e72e5d062c9eb44a5f11d308c62b2eb9908d6f6

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a17d2fb6fbd872628e20cd00507eb91921d3f178c6b633b77ec53a1ea08ae734
MD5 a6f6e8adfa7aca989c44eb659dd36a5e
BLAKE2b-256 3c4e3e1cf001d792a03ee95196ec343ef10a5adfdee640f1ec963bb3d875fe96

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fa18638677b3bf4966558e92fa9b65fa6bb52c50490d9db3ab7048a55bccb33b
MD5 a033a434bae824ae58007582e7909108
BLAKE2b-256 f18db814fb190ca6c78dc7aa84ca10e5084638adc146bce0feb122197f509443

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 617a2ff849033c0ea169ba2576c9edfc0de1dab7e7b3c582061e446daed8717b
MD5 9fe3cba6116b32bfade30433a527271d
BLAKE2b-256 24bf49e7c3748f623e525b9d94e56fbb18bbf026388ee862b7dfd8926e5b4b9d

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 69b30efb3c51871b4cfeea298d2d973f429e7784e5acc17c5ca9f0fc0b86ce3b
MD5 d1e8af852f7c4bd440c2af3765112b6e
BLAKE2b-256 aa40b54db43742702bb01e31cd1fa3946fe5642d4ed9ceee1054cc485a3ca456

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f37f8212656e55149c0fb3d4dc6258aa72095767b43fb7d178e97556f81c848d
MD5 a04259946ef756b464fab5ffa04dde62
BLAKE2b-256 91fdb03da4f73449360283d485d421b24294e3707b8a98fe256ae0bbac8e6544

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.10.0-py3-none-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.10.0-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 055491755f2ee9b65d3b867bec6fadea0600b666099855ba6b4a264bdd6ff781
MD5 727ee21203c9ed58039bb88352159201
BLAKE2b-256 ad64e35dbbd205b75d19a853136b4008bc52933f173c18536d24b4118033af9b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page