• Stars
    star
    9,586
  • Rank 3,710 (Top 0.08 %)
  • Language
    Rust
  • License
    MIT License
  • Created over 3 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

阿里云盘 WebDAV 服务

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 协议不支持文件秒传。

请注意:V2 版本基于阿里云盘开放平台接口实现,不再支持阿里云盘 Web 和 App 版本获取的 refresh token。 由于本项目作者不再使用梅林固件,V2 版本不再免费支持 Koolshare 梅林固件系统,如有需要请考虑付费支持

如果项目对你有帮助,请考虑捐赠支持项目持续维护。 也可以考虑加入aliyundrive-webdav 知识星球获取咨询和技术支持服务。

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/v2.2.2/aliyundrive-webdav_2.2.2-1_aarch64_generic.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v2.2.2/luci-app-aliyundrive-webdav_2.2.2_all.ipk
wget https://github.com/messense/aliyundrive-webdav/releases/download/v2.2.2/luci-i18n-aliyundrive-webdav-zh-cn_2.2.2-1_all.ipk
opkg install aliyundrive-webdav_2.2.2-1_aarch64_generic.ipk
opkg install luci-app-aliyundrive-webdav_2.2.2_all.ipk
opkg install luci-i18n-aliyundrive-webdav-zh-cn_2.2.2-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 配置界面

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/

获取 refresh token

扫码获取 refresh token

命令行用法

$ aliyundrive-webdav --help
WebDAV server for AliyunDrive

Usage: aliyundrive-webdav [OPTIONS]
       aliyundrive-webdav <COMMAND>

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

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

Note

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

Note

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

License

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

More Repositories

1

aliyundrive-fuse

阿里云盘 FUSE 磁盘挂载
Rust
969
star
2

homebrew-macos-cross-toolchains

macOS cross compiler toolchains
Ruby
857
star
3

jieba-rs

The Jieba Chinese Word Segmentation Implemented in Rust
Rust
723
star
4

cargo-zigbuild

Compile Cargo project with zig as linker
Rust
317
star
5

rust-musl-cross

Docker images for compiling static Rust binaries using musl-cross
Shell
277
star
6

nh3

Python binding to Ammonia HTML sanitizer Rust crate
Rust
233
star
7

wechat-bot

A robot of wechat based on python (Not maintained)
Python
180
star
8

dav-server-rs

Rust WebDAV server library. A fork of the webdav-handler crate.
Rust
120
star
9

typst-py

Python binding to typst
Rust
102
star
10

mupdf-rs

Rust binding to mupdf
Rust
100
star
11

openwrt-netbird

OpenWrt package for netbird
Makefile
99
star
12

rocketmq-python

RocketMQ Python client
Python
94
star
13

cargo-xwin

Cross compile Cargo project to Windows MSVC target with ease
Rust
60
star
14

fasttext-serving

fastText model serving service
Rust
59
star
15

fasttext-rs

fastText Rust binding
Rust
53
star
16

multi-lsp-proxy

A LSP proxy to multiple language servers
Rust
48
star
17

otpauth-rs

Two-step verification of HOTP/TOTP for Rust.
Rust
32
star
18

crfs-rs

Pure Rust port of CRFsuite: a fast implementation of Conditional Random Fields (CRFs)
Rust
27
star
19

leptos_sse

Leptos server signals synced through Server-Sent-Events (SSE)
Rust
25
star
20

unidiff-rs

Unified diff parsing/metadata extraction library for Rust
Rust
24
star
21

crfsuite-rs

Rust binding to crfsuite
Rust
24
star
22

fat-macho-rs

Mach-O Fat Binary Reader and Writer
Rust
22
star
23

libtailscale-rs

Rust binding to libtailscale
Rust
22
star
24

fasttext-wheel

Build and upload fastText Python wheels to PyPI
Shell
21
star
25

rocketmq-rs

Rust client for Apache RocketMQ
Rust
21
star
26

lddtree-rs

Read the ELF dependency tree
Rust
21
star
27

rjieba-py

jieba-rs Python binding
Python
20
star
28

APUE-Learning

Learning Advanced Programming in the UNIX Environment
C
20
star
29

wechat-rs

WeChat SDK for Rust. [WIP]
Rust
18
star
30

robotparser-rs

robots.txt parser for Rust.
Rust
17
star
31

cjieba-py

Python cffi binding to CppJieba
Python
15
star
32

py-promql-parser

PromQL parser for Python
Rust
15
star
33

auditwheel-symbols

Find out which symbols are causing auditwheel too-recent versioned symbols error.
Rust
14
star
34

chinese-ner-rs

A CRF based Chinese Named-entity Recognition Library written in Rust
Rust
14
star
35

sanic-gunicorn

Gunicorn worker for Sanic
Python
12
star
36

bosonnlp-rs

BosonNLP SDK for Rust
Rust
11
star
37

rust-lunardate

A Chinese Calendar Library in Rust
Rust
10
star
38

manylinux-cross

manylinux2014 and manylinux_2_24 aarch64/armv7l/s390x/ppc64/ppc64le cross compilation docker image
Dockerfile
10
star
39

rjsonnet-py

Python bindings to Rust jrsonnet crate(a Rust implementation of Jsonnet language)
Rust
9
star
40

lingua-py

lingua-rs Python binding
Rust
9
star
41

llvm-bitcode-rs

LLVM Bitcode parser in Rust
Rust
8
star
42

mmseg-rs

Chinese word segmentation algorithm MMSEG in Rust
Rust
7
star
43

huaweicloud-github-runner

GitHub Action for automatic create and register Huawei Cloud ECS instance as a GitHub Actions self-hosted runner
JavaScript
7
star
44

rust-jieba

Rust binding to cppjieba
Rust
7
star
45

optionaldict

A dict-like object that ignore NoneType values for Python
Python
6
star
46

images2video

Python images to video library using OpenCV
Python
6
star
47

caiyun

字幕组资源离线下载至百度云盘 (Not Maintained)
Python
6
star
48

douban2kindle

豆瓣阅读图书推送 Kindle
Python
6
star
49

cargo-options

Reusable common Cargo command line options
Rust
5
star
50

vim-python-ide

Vim configuration files for developing Python projects
Vim Script
4
star
51

cfasttext

A fastText C wrapper
C++
4
star
52

rjmespath-py

jmespath.rs Python binding
Python
4
star
53

douappbook

Crawl book and rating infomations from Douban App
Python
4
star
54

everbean

Sync notes from book.douban.com to Evernote
Python
4
star
55

murmurhash2-py

murmurhash2 for Python
Rust
4
star
56

implib-rs

Generate Windows import library from module definition file in Rust
Rust
4
star
57

data-structure-learning

数据结构学习,作业代码
C
4
star
58

rfiletype-py

Infer file and MIME type by checking the magic number signature, Python binding of https://github.com/bojand/infer
Rust
4
star
59

homebrew-tap

Personal Homebrew formulaes
Ruby
3
star
60

opencc-rs

OpenCC binding for Rust.
Rust
3
star
61

py-dissimilar

A diff library with semantic cleanup
Rust
3
star
62

is-minified-js

Detecting minified javascript files
Python
3
star
63

cython-abseil-sample

Using abseil-cpp with Cython project sample
Cython
3
star
64

rocket-lenient-json

A rocket_contrib::Json copy which removes the Content-Type check
Rust
2
star
65

jieba-rpc

Simple jieba RPC server based on msgpack-rpc-python
Python
2
star
66

crate-wheels

Build Python 🐍 wheels 🎡 for some Rust crates 📦  on GitHub Actions.
Rust
2
star
67

rusted-rs

Simple tool to highlight rustc --explain output
Rust
2
star
68

python-sysconfig-collector

Collect Python sysconfig on GitHub Actions for maturin
Python
2
star
69

github-widget

A jQuery plugin to show your Github repositories.
CSS
2
star
70

cqdb-sys

Low level Rust binding to Constant Quark Database (CQDB)
C
2
star
71

django-mako

Django mako
Python
1
star
72

python3-config-rs

Read Python 3 sysconfigdata in Rust
Rust
1
star
73

Flask-DjangoQuery

DjangoQuery extension for Flask-SQLAlchemy
Python
1
star
74

liblbfgs-sys

Low level Rust binding to libLBFGS: a library of Limited-memory Broyden-Fletcher-Goldfarb-Shanno (L-BFGS)
Rust
1
star
75

nvim-config

My neovim configuration
Lua
1
star
76

cmake-toolchain-rs

Auto-generate CMake toolchain file
Rust
1
star
77

maturin-ci-playground

Playground for `maturin generate-ci`
Rust
1
star
78

serde-single-key-map

Unwrap a single key map with serde
Rust
1
star
79

messense

1
star
80

rpi

Raspberry Pi scripts
Python
1
star
81

rusted

Simple tool to highlight rustc --explain output
Python
1
star
82

cqdb-rs

Constant Quark Database in Rust
Rust
1
star
83

extender

A simple plug-in/extension system on Python
Python
1
star
84

pyo3-issue-71

Python
1
star
85

flake8-network-timeout

Python
1
star
86

cppjieba-cabi

Idiomatic C ABI for CppJieba
C++
1
star
87

catsup-theme-seven

A theme for Catsup
CSS
1
star
88

catsup-theme-lingonberry

A theme for Catsup. WIP
CSS
1
star
89

doubookcrawler

Douban book ratings infomation crawler.
Python
1
star
90

rocket-validator

Validator data guard for Rocket
Rust
1
star
91

tree-sitter-py

Experimental Python binding to tree-sitter. Don't use it.
Rust
1
star
92

stacktracer

Stack tracer for multi-threaded applications
Python
1
star
93

wiki

Personal wiki
CSS
1
star
94

sccache-wheel

Python wheels for sccache
1
star
95

CMCCLogin

A CMCC WLAN Client for OS X
Objective-C
1
star
96

jbig2dec-rs

Rust binding to jbig2dec
Rust
1
star
97

algorithm-learning

Codes I wrote when I was learning algorithm
C
1
star
98

sha512-crypt

Python binding to Rust sha-crypt password hashing crate
Python
1
star
99

dirty-json-rs

Fix up dirty JSON string
Rust
1
star