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 等实现在电视上直接观看云盘视频内容, 支持上传文件,但受限于 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.9.0/aliyundrive-webdav_1.9.0-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.9.0/luci-app-aliyundrive-webdav_1.9.0_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v1.9.0/luci-i18n-aliyundrive-webdav-zh-cn_1.9.0-1_all.ipk
opkg install aliyundrive-webdav_1.9.0-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_1.9.0_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_1.9.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.9.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-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 选项虽然能加速上传但可能会导致修改过的同样大小的文件不会被上传

获取 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.9.0-py3-none-win_arm64.whl (3.3 MB view details)

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

aliyundrive_webdav-1.9.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.9.0-py3-none-musllinux_1_1_i686.whl (3.9 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

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

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 musllinux: musl 1.1+ ARM64

aliyundrive_webdav-1.9.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.9.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.9.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.9.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (3.9 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

aliyundrive_webdav-1.9.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.9.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.9.0-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 45741f1063530def154b1cc51b2337d4818df8808ddc732d038183aa5f9fb0f1
MD5 4863549d45ddd3515bad5cba892c2591
BLAKE2b-256 d9dacef2e19f56ffdb1fe206833a64d0fad095482e8ab32a546a50a3114f9022

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e09196a3c2698b746bea4c49fba53a23fb81ba52a38e5152598237f434acca1f
MD5 bed8db65783f05a705a33710c08e8a95
BLAKE2b-256 b973e254512e2f429f561eaa8707aaf9610ed7fc506c10b6e29b46a66475b55f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 b9f68bf7052e8613c901e490e73f8c7fba94c2050f1b3f60be9a4f4b0e590d75
MD5 298e3f84058d7f9469154245e102c07a
BLAKE2b-256 072029b66cfbb248442b71218449b1407f1cfebcbd8c74c499d5313fe6eed820

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cedfe7ffdceff97b722129ede5044fcc2becfdbf0feb1642443476249fccc3fd
MD5 d339948599e4b6d6a7eebd7c9b160d47
BLAKE2b-256 dbead2e2df97685e3ded384aa02eb1865625c91414e1173502d8e72dddc677c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 d41d47d9983e75977b1afcbca7604b0c4ceed4b5df13b629eacd10bce6085eb0
MD5 bf347c9efd692d60861a6df7358479e5
BLAKE2b-256 1f21d3b3e991baaa73584995beef908e3a3ef29b56e13790cbfc09adbe2b16c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 b8b7069a5b0461588a0995048f443783bd6f4674f41cf5f813538347a868c134
MD5 63e49a8daaae1035f02c64d63afe9cc1
BLAKE2b-256 5fdb8ed630bb276f4b79f773a86a36599909355cb8191be38db424f31d8d099a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 79f5e9e81ea09375ab21d83fecf41fac2b84b04685c32a658368cc36a7a891f9
MD5 db8bc46c6df0dae7cd4edf3019ee8b7a
BLAKE2b-256 40caa495616218ff4e3ad8c8aa117d6aed24562d95240afb2a0273b54f9e7706

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0b56623b52aa9cb29d02fc8bc8fdc5149f1ac4e79f30f746ae409c358be89144
MD5 f84550b160b33e1617fe326ff7cd8431
BLAKE2b-256 5dc0b6d993d55e7b26f5d8e9d61fde6243334cef8ff32b100873021318b56a57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 914015988faee4cc186a0b273f24f0141fb0fd3b7b817667467a5dc968558000
MD5 19052b8dcf6142e185d33fdd112dc676
BLAKE2b-256 e31a93f0e566dc5660e7438d52c94a15eaeacd8a5dfdf193c5fd1d045513f647

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 320110ccf82ae15c3dbc5699e14a1f4d13a4e4602466bea3af142ff6a269bf6c
MD5 d4ffc44ddb41e22192fc739576daaa1f
BLAKE2b-256 a3e980c6ee4e83af26c185946e79995eaa0c390c67db5e2f4a5f40b8c08a6b36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 4cf398d296dec5de7c1c52c233cef45bcd1aaf5a3ecb4a863e11a8ea9aeb615d
MD5 747a3335d367a707e5ce9fbeb9a13ef1
BLAKE2b-256 3e2c6ed3f770f22c588f522f499a989085bc633b2556ad6a84ae9c44bc46dd36

See more details on using hashes here.

File details

Details for the file aliyundrive_webdav-1.9.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.9.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0a08ffd5f0a5996ae886145f9e26bbbecfbec97c03645a6cf80f0c1f5491673b
MD5 488e288187e56f8fa86cedd58eaba2c2
BLAKE2b-256 403fad844d9afcb8e13107749e6763b4870bee959e5353c122c3a21877eb3773

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aliyundrive_webdav-1.9.0-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 6668dd6a7ffe8afe9f579ee4c4c77a6f418215b24ac2ea4e2a24dc3929083250
MD5 4ac17d7a7ead4dcce8cdc16cde34fcd5
BLAKE2b-256 bc9d809f5a7641955f425ccac2ec1edb3bdf7a20e429bc9d8d9d0f5f0e7c1ba9

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