В этой небольшой статье Вы узнаете как загрузить файлы на облако от Mail.ru, используя Python и протокол WebDAV.
Настройки приложения
Перед тем как подключиться к облаку по WebDAV, необходимо создать пароль для внешнего приложения. Перейдите в настройки по ссылке, добавьте новое приложения и сервис сгенерирует вам пароль.
Подключение к WebDAV
Для работы с протоколом есть готовая библиотека webdavclient3
, установите командой:
pip install webdavclient3
Укажите свои данные (webdav_login: почтовый адрес, и webdav_password: ранее сгенерированный пароль) и попробуйте подключиться.
from webdav3.client import Client
data = {
'webdav_hostname': "https://webdav.cloud.mail.ru",
'webdav_login': "MAIL@mail.ru",
'webdav_password': "PASSWORD"
}
client = Client(data)
my_files = client.list()
print(my_files)
Данный код выведет список всех файлов хранящихся в главном каталоге облака. В моем случаем результат:
['Горное озеро.jpg', 'Долина реки.jpg']
Если подключение прошло успешно, можете переходить к следующему этапу, и рассмотреть несколько самых интересных методов.
Методы WebDAV Сlient
Создать папку:
client.mkdir("folder")
client.mkdir("folder/files")
Удалить:
client.clean("folder")
Скачать с облака:
client.download_sync(remote_path="Долина реки.jpg", local_path="Долина реки.jpg")
client.download_sync(remote_path="Горное озеро.jpg", local_path=r"C:\Users\username\Downloads\Горное озеро.jpg")
Загрузить в облако:
client.upload_sync(remote_path="/my.txt", local_path="my.txt")
client.upload_sync(remote_path="folder/", local_path=r"C:\Users\username\Downloads\test")
Пример
Для примера разработаем небольшую программу для загрузки файлов в облако.
import sys
from datetime import datetime
from webdav3.client import Client
data = {
'webdav_hostname': "https://webdav.cloud.mail.ru",
'webdav_login': "MAIL@mail.ru",
'webdav_password': "PASSWORD"
}
client = Client(data)
if not client.check('backup'):
client.mkdir('backup')
date = datetime.now().strftime("%d%m%Y-%H%M%S")
new_folder = sys.argv[1].split('\\')[-2]
client.upload_sync(remote_path=f"backup/{new_folder}_{date}", local_path=sys.argv[1])
Запустим и укажем каталог для загрузки.
python main.py 'C:\Documents\Project\'
Результат:
Дополнительно
Дополнительную информацию можете найти в документации webdavclient3.