Приветствую всех, в этом уроке речь пойдет о Яндекс.Диске, а именно о работе с ней через Python. Данный урок будет полезен для новичков, в качестве примера напишем небольшую программу, и научим ее загружать не только файлы, но и папки с содержимым.
Яндекс.Диск REST API
Для начала получим токен, который необходим для работы с API Диском. Для этого перейдем по ссылке (новая, актуальная на 2023г. ссылка, спасибо пользователю govermsk) и зарегистрируем наше приложение, назовём его к примеру, backup, и дадим ему полное разрешение для работы с Я.Диском.
Теперь нужно просто перейти по этой ниже ссылке, заменив ID приложения на свой (ID вы получили после регистрации приложения), и токен готов.
https://oauth.yandex.ru/authorize?response_type=token&client_id=<id_приложения>
Python
Для работы с Я.Диск REST API будем использовать уже готовую библиотеку, установим ее командой.
pip install yadisk
Попробуем подключиться к нашему Я.Диску используя ранее полученный токен.
import yadisk
y = yadisk.YaDisk(token="токен")
print(y.check_token()) # Проверим токен
Вывод
True
Если результат True, значит вы все сделали правильно :)
Добавим еще небольшой код, который отправит несколько файлом, и создаст папку на Я.Диске.
y.mkdir("/test/Hello Word") # Создать папку
y.upload("file1.txt", "/test/file1.txt") # Загружает первый файл
y.upload("file2.txt", "/test/file2.txt") # Загружает второй файл
Результат.
Всё работает отлично, мы смогли загрузить наши файлы и создать папку.
Усложним задачу, и попробует не создать, а отправить всю папку с содержимым, так скажем, сделать backup данных.
import yadisk
import os
from datetime import datetime
y = yadisk.YaDisk(token="токен")
def run(path):
date = datetime.strftime(datetime.now(), "%d.%m.%Y-%H.%M.%S")
y.mkdir(f'/test/{date}')
for address, dirs, files in os.walk(path):
for dir in dirs:
y.mkdir(f'/test/{date}/{dir}')
print(f'Папка {dir} создана')
for file in files:
print(f'Файл {file} загружен')
y.upload(f'{address}/{file}', f'/test/{date}/{file}')
if __name__ == '__main__':
run(r'C:\folder\путь к папке для загрузки')
Результат
Теперь при каждом запуске скрипта, наши данные будут загружаться в папку с уникальным именем "дата и время загрузки".
По всем вопросом можете обратиться ко мне через обратную связь, буду рад помочь.