Skip to main content

Webdav API, resource API и wdc для WebDAV-серверов (Yandex.Disk, Dropbox, Google Disk, Box, 4shared и т.д.)

Project description

Webdavclient

PyPI version Requirements Status PullReview stats

Supported Python versions License

Пакет Webdavclient обеспечивает легкую и удобную работу с WebDAV-серверами (Яндекс.Диск, Dropbox, Google Диск, Box, 4shared и т.д.). В данный пакет включены следующие компоненты: webdav API, resource API и wdc.

Исходный код проекта можно посмотреть здесь Github

Установка и обновление

Установка

Linux

$ sudo apt-get install libxml2-dev libxslt-dev python-dev
$ sudo apt-get install libcurl4-openssl-dev python-pycurl
$ sudo easy_install webdavclient

Mac OS X

curl https://bootstrap.pypa.io/ez_setup.py -o - | python
python setup.py install --prefix=/opt/setuptools
sudo easy_install pip

Обновление

$ sudo pip install -U webdavclient

Webdav API

Webdav API - представляет из себя набор webdav-методов работы с облачными хранилищами. В этот набор входят следующие методы: check, free, info, list, mkdir, clean, copy, move, download, upload, publish и unpublish.

Настройка клиента

Обязательными ключами для настройки соединения клиента с WevDAV-сервером являются webdav_hostname и webdav_login, webdav_password.

import webdav.client as wc
options = {
    'webdav_hostname': "https://webdav.server.ru",
    'webdav_login': "login",
    'webdav_password': "password"
}
client = wc.Client(options)

При наличие прокси-сервера необходимо указать настройки для подключения через него.

import webdav.client as wc
options = {
    'webdav_hostname': "https://webdav.server.ru",
    'webdav_login': "w_login",
    'webdav_password': "w_password",
    'proxy_hostname': "http://127.0.0.1:8080",
    'proxy_login': "p_login",
    'proxy_password': "p_password"
}
client = wc.Client(options)

При необходимости использования сертификата, путь к сертификату и приватному ключу задается следующим образом:

import webdav.client as wc
options = {
    'webdav_hostname': "https://webdav.server.ru",
    'webdav_login': "w_login",
    'webdav_password': "w_password",
    'cert_path': "/etc/ssl/certs/certificate.crt",
    'key_path': "/etc/ssl/private/certificate.key"
}
client = wc.Client(options)

Синхронные методы

Проверка существования ресурса

client.check("dir1/file1")
client.check("dir1")

Получение информации о ресурсе

client.info("dir1/file1")
client.info("dir1/")

Проверка свободного места

free_size = client.free()

Получение списка ресурсов

files1 = client.list()
files2 = client.list("dir1")

Создание директории

client.mkdir("dir1/dir2")

Удаление ресурса

client.clean("dir1/dir2")

Копирование ресурса

client.copy(remote_path_from="dir1/file1", remote_path_to="dir2/file1")
client.copy(remote_path_from="dir2", remote_path_to="dir3")

Перемещения ресурса

client.move(remote_path_from="dir1/file1", remote_path_to="dir2/file1")
client.move(remote_path_from="dir2", remote_path_to="dir3")

Загрузка ресурса

client.download_sync(remote_path="dir1/file1", local_path="~/Downloads/file1")
client.download_sync(remote_path="dir1/dir2/", local_path="~/Downloads/dir2/")

Выгрузка ресурса

client.upload_sync(remote_path="dir1/file1", local_path="~/Documents/file1")
client.upload_sync(remote_path="dir1/dir2/", local_path="~/Documents/dir2/")

Публикация ресурса

link = client.publish("dir1/file1")
link = client.publish("dir2")

Отмена публикации ресурса

client.unpublish("dir1/file1")
client.unpublish("dir2")

Обработка исключений

from webdav.client import WebDavException
try:
    ...
except WebDavException as exception:
    ...

Получение недостающих файлов

client.pull(remote_directory='dir1', local_directory='~/Documents/dir1')

Отправка недостающих файлов

client.push(remote_directory='dir1', local_directory='~/Documents/dir1')

Асинхронные методы

Загрузка ресурса

client.download_async(remote_path="dir1/file1", local_path="~/Downloads/file1", callback=callback)
client.download_async(remote_path="dir1/dir2/", local_path="~/Downloads/dir2/", callback=callback)

Выгрузка ресурса

client.upload_async(remote_path="dir1/file1", local_path="~/Documents/file1", callback=callback)
client.upload_async(remote_path="dir1/dir2/", local_path="~/Documents/dir2/", callback=callback)

Resource API

Resource API - используя концепцию ООП, обеспечивает работу с облачными хранилищами на уровне ресурсов.

Получение ресурса

res1 = client.resource("dir1/file1")

Работа с ресурсом

res1.rename("file2")

res1.move("dir1/file2")

res1.copy("dir2/file1")

info = res1.info()

res1.read_from(buffer)

res1.read(local_path="~/Documents/file1")

res1.read_async(local_path="~/Documents/file1", callback)

res1.write_to(buffer)

res1.write(local_path="~/Downloads/file1")

res1.write_async(local_path="~/Downloads/file1", callback)

wdc

wdc - кросплатформенная утилита, обеспечивающая удобную работу с WebDAV-серверами прямо из Вашей консоли. Помимо полной реализации методов из webdav API, также добавлены методы синхронизации содержимого локальной и удаленной директорий.

Аутентификация

$ wdc login https://wedbav.server.ru -p http://127.0.0.1:8080
webdav_login: w_login
webdav_password: w_password
proxy_login: p_login
proxy_password: p_password

Также имеются дополнительные ключи --root[-r], --cert-path[-c] и --key-path[-k].

Пример работы с утилитой

$ wdc check
success
$ wdc check file1
not success
$ wdc free
245234120344
$ wdc ls dir1
file1
...
fileN
$ wdc mkdir dir2
$ wdc copy dir1/file1 -t dir2/file1
$ wdc move dir2/file1 -t dir2/file2
$ wdc download dir1/file1 -t ~/Downloads/file1
$ wdc download dir1/ -t ~/Downloads/dir1/
$ wdc upload dir2/file2 -f ~/Documents/file1
$ wdc upload dir2/ -f ~/Documents/
$ wdc publish di2/file2
https://yadi.sk/i/vWtTUcBucAc6k
$ wdc unpublish dir2/file2
$ wdc pull dir1/ -t ~/Documents/dir1/
$ wdc push dir1/ -f ~/Documents/dir1/
$ wdc info dir1/file1
{'name': 'file1', 'modified': 'Thu, 23 Oct 2014 16:16:37 GMT',
'size': '3460064', 'created': '2014-10-23T16:16:37Z'}

WebDAV-сервера

Поддерживаемые методы

Сервисы

free

info

list

mkdir

clean

copy

move

download

upload

Яндекс.Диск

+

+

+

+

+

+

+

+

+

Dropbox

-

+

+

+

+

+

+

+

+

Google Диск

-

+

+

+

+

-

-

+

+

Box

+

+

+

+

+

+

+

+

+

4shared

-

+

+

+

-

-

+

+

+

Методы publish и unpublish поддерживает только Яндекс.Диск.

Настройка подключения

Для работы с облачными хранилащами Dropbox и Google Диск по протоколу WebDAV необходимо использовать WebDAV-сервера DropDAV и DAV-pocket соответственно.

Список настроек для WebDAV - серверов:

webdav-servers:
  - yandex:
    hostname: https://webdav.yandex.ru
    login:    #login_for_yandex
    password: #pass_for_yandex
  - dropbox:
    hostname: https://dav.dropdav.com
    login:    #login_for dropdav
    password: #pass_for_dropdav
  - google
    hostname: https://dav-pocket.appspot.com/docs/
    login:    #login_for_dav-pocket
    password: #pass_for_dav-pocket
  - box:
    hostname: https://dav.box.com
    root:     dav
    login:    #login_for_box
    password: #pass_for_box
  - 4shared:
    hostname: https://webdav.4shared.com
    login:    #login_for_4shared
    password: #pass_for_4shared

Включение autocomplete

Для Mac OS X или старых Unix-систем необходимо обновить bash.

brew install bash
chsh
brew install bash-completion

Autocomplete можно включить глобально

activate-global-python-argcomplete --dest=path/to/bash_completion.d/

или локально

#.bashrc
eval "$(register-python-argcomplete wdc)"

Project details


Download files

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

Source Distribution

webdavclient-0.6.6.tar.gz (16.6 kB view hashes)

Uploaded Source

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