Skip to main content

Webdav API, resource API and webdav tool for WebDAV services (Яндекс.Диск, Dropbox, Google Диск, Box и 4shared)

Project description

Webdavclient

PyPI version Travis master

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

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

Установка

Установка

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

Обновление

$ sudo pip install -U webdavclient

Webdav API

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

Сервисы

free

info

list

mkdir

clean

copy

move

download

upload

Яндекс.Диск

+

+

+

+

+

+

+

+

+

Dropbox

-

+

+

+

+

+

+

+

+

Google Диск

-

+

+

+

+

-

-

+

+

Box

+

+

+

+

+

-

-

+

+

4shared

-

+

+

+

-

-

+

+

+

Методы 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_paassword': "password"
}
client = wc.Client(options)

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

import webdav.client as wc
options = {
    'webdav_hostname': "https://webdav.server.ru",
    'webdav_login': "w_login",
    'webdav_paassword': "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_paassword': "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.move(remote_path_from="dir1/file1", remote_path_to="dir2/file1")

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

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")

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

client.unpublish("dir1/file1")

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

from webdav.client import WebDavException
try:
    ...
except WebDavException as e:
    loggin_except(e)

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

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

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

Также имеются дополнительные ключи --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/di1/
$ wdc info dir1/file1
{'name': 'file1', 'modified': 'Thu, 23 Oct 2014 16:16:37 GMT',
'size': '3460064', 'created': '2014-10-23T16:16:37Z'}

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.2.7.tar.gz (11.0 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