У многих есть Яндекс.Почта. Я, конечно, не настаиваю. Скорее всего есть люди, у которых почты на Яндексе никогда не было. Но, все же. Может быть самое время ее завести? Потому, что использовать Яндекс.Диск, который создается совместно с почтой можно с помощью Питона. Для чего может понадобиться доступ к Яндекс.Диску из скрипта? Предположим, можно отправлять туда бэкап файлов в автоматическом режиме. Но, давайте разберемся, с помощью чего и как использовать возможности Диска.
Получение токена
Для начала нужно получить токен. Именно с помощью токена приложение и будет осуществлять доступ к копированию, вставке и прочим функциям. А чтобы получить токен, нужно зарегистрировать приложение, которое будет работать в питоне.
Идем в поиск и вбиваем «Доступ внешних приложений Яндекс», ну или можно перейти вот по этой
На следующей странице заполняем поле «Название приложения». Название может быть любым. Главное, чтобы оно было вам понятно. Ведь в будущем вы можете создать еще одно приложение, доступ к которому тоже надо будет открыть. И вот, чтобы их не путать, да и чтобы токены у них были разные, это и делается.
Спускаемся ниже и открываем список «Яндекс.Диск REST API». Здесь нужно проставить галочки во все пункты.
После этого открываем следующий пункт «Яндекс.Диск WebDAV API», где также надо поставить галочку.
Для чего это, собственно, нужно? Это для того, чтобы в будущем ваше приложение могло иметь доступ ко всем функциям Яндекс.Диска, будь то удаление, копирование, вставка и прочие функции.
После того, как галочки проставлены, спускаемся еще ниже и жмем кнопку «Создать приложение».
Откроется окно с данными, в которых указан ID приложения и пароль доступа.
Теперь нужно получить токен. Идем вот по этой ссылке:
Итак, с токеном мы определились. Теперь приступим к созданию простого демо приложения, которое продемонстрирует возможности библиотеки для работы с Яндекс.Диском.
Что понадобиться?
Для работы с Яндекс.Диском устанавливаем библиотеку yadisk. Для этого пишем в терминале:
После этого импортируем библиотеку в скрипт.
Теперь создадим отдельный от основного скрипта файл, в который сохраним токен, чтобы он не находился в скрипте, в открытом виде, а после импортируем параметр в скрипт:
Создание директории, проверка на валидность токена
Давайте продолжим. Для того, чтобы получить доступ к диску, нужно создать его объект, в котором будет передаваться токен для авторизации. Поэтому пишем следующий код:
Токен, перед тем как совершать с диском какие-то действия можно проверить на валидность. В случае, если токен не пройдет проверку, будет возвращено значение False, а иначе True.
В коде выше проверяется токен на валидность. Если проверка прошла успешно, проверяется на Яндекс.Диске наличие папки «test-dir». Если ее нет, она создается. Так же, примерно, как и работа с модулем os. И выводиться принт об успешном ее создании.
Просмотр содержимого директории и вывод информации о файлах и папках
Теперь давайте посмотрим функцию, с помощью которой можно просмотреть содержимое директории на диске. Это функция y.listdir('/test-dir/'), где в качестве параметра указывается сканируемая директория. В ответ функция получает файл JSON, из которого и добываем в цикле нужную информацию.
Вот содержимое моей папки, в которую я предварительно скопировал документы.
Если же папка будет пуста, то объект будет пуст. И никакого вывода не будет.
Загрузка, удаление и скачивание файла
Теперь давайте посмотрим, как с помощью Python удалить, загрузить и скачать файл на диск. Делается это довольно просто:
Проверяю наличие файла. Так как, если файл существует, будет вызвана ошибка. И если файл есть, удаляю его. Если файла нет, загружаю его на диск. А потом скачиваю содержащийся уже на диске текстовый документ. Помимо удаления файла можно удалить целую директорию со всем ее содержимым. Для этого нужно указать, какую директорию удалить и параметр permanently поставить в значение True. Проверено. Работает.
На этом, думаю, можно закончить рассмотрение этой полезной библиотеки. Возможно, что ее использование в резервном копировании данных, хотя бы на простом, бытовом уровне, поможет кому-то сохранить важные документы.
Спасибо за внимание. Надеюсь, что данная статья была вам полезна
Получение токена
Для начала нужно получить токен. Именно с помощью токена приложение и будет осуществлять доступ к копированию, вставке и прочим функциям. А чтобы получить токен, нужно зарегистрировать приложение, которое будет работать в питоне.
Идем в поиск и вбиваем «Доступ внешних приложений Яндекс», ну или можно перейти вот по этой
Ссылка скрыта от гостей
. Здесь нас интересует одна большая желтая кнопка «Зарегистрировать новое приложение». Жмем ее и переходим на страницу создания приложения.На следующей странице заполняем поле «Название приложения». Название может быть любым. Главное, чтобы оно было вам понятно. Ведь в будущем вы можете создать еще одно приложение, доступ к которому тоже надо будет открыть. И вот, чтобы их не путать, да и чтобы токены у них были разные, это и делается.
Спускаемся ниже и открываем список «Яндекс.Диск REST API». Здесь нужно проставить галочки во все пункты.
После этого открываем следующий пункт «Яндекс.Диск WebDAV API», где также надо поставить галочку.
Для чего это, собственно, нужно? Это для того, чтобы в будущем ваше приложение могло иметь доступ ко всем функциям Яндекс.Диска, будь то удаление, копирование, вставка и прочие функции.
После того, как галочки проставлены, спускаемся еще ниже и жмем кнопку «Создать приложение».
Откроется окно с данными, в которых указан ID приложения и пароль доступа.
Теперь нужно получить токен. Идем вот по этой ссылке:
Ссылка скрыта от гостей
. Тут вместо фразы «ваш_id» нужно вставить тот ID, что получили ранее. Ну, а дальше появиться окно с токеном, который нужно скопировать и сохранить в надежном месте. Он еще понадобиться. Конечно же, токен выдается не один раз. И его можно перевыпустить.Итак, с токеном мы определились. Теперь приступим к созданию простого демо приложения, которое продемонстрирует возможности библиотеки для работы с Яндекс.Диском.
Что понадобиться?
Для работы с Яндекс.Диском устанавливаем библиотеку yadisk. Для этого пишем в терминале:
pip install yadisk
После этого импортируем библиотеку в скрипт.
import yadisk
Теперь создадим отдельный от основного скрипта файл, в который сохраним токен, чтобы он не находился в скрипте, в открытом виде, а после импортируем параметр в скрипт:
from config import token
Создание директории, проверка на валидность токена
Давайте продолжим. Для того, чтобы получить доступ к диску, нужно создать его объект, в котором будет передаваться токен для авторизации. Поэтому пишем следующий код:
y = yadisk.YaDisk(token=token)
Токен, перед тем как совершать с диском какие-то действия можно проверить на валидность. В случае, если токен не пройдет проверку, будет возвращено значение False, а иначе True.
Python:
if y.check_token():
if not y.is_dir("/test-dir"):
y.mkdir("/test-dir")
print('Папка "test-dir" создана')
В коде выше проверяется токен на валидность. Если проверка прошла успешно, проверяется на Яндекс.Диске наличие папки «test-dir». Если ее нет, она создается. Так же, примерно, как и работа с модулем os. И выводиться принт об успешном ее создании.
Просмотр содержимого директории и вывод информации о файлах и папках
Теперь давайте посмотрим функцию, с помощью которой можно просмотреть содержимое директории на диске. Это функция y.listdir('/test-dir/'), где в качестве параметра указывается сканируемая директория. В ответ функция получает файл JSON, из которого и добываем в цикле нужную информацию.
Python:
print('Содержимое папки "test-dir":\n')
for item in y.listdir('/test-dir/'):
print(f"Название: {item['name']}")
print(f'Размер: {item["size"]} байт')
print(f"Тип файла: {item['type']}")
print(f"Тип документа: {item['media_type']}")
print(f"Дата создания: {item['created']}\n")
Вот содержимое моей папки, в которую я предварительно скопировал документы.
Если же папка будет пуста, то объект будет пуст. И никакого вывода не будет.
Загрузка, удаление и скачивание файла
Теперь давайте посмотрим, как с помощью Python удалить, загрузить и скачать файл на диск. Делается это довольно просто:
Python:
if y.is_file("/test-dir/Новый текстовый документ.txt"):
y.remove("/test-dir/Новый текстовый документ.txt", permanently=False)
else:
y.upload("Новый текстовый документ.txt", "/test-dir/Новый текстовый документ.txt")
if y.is_file('/test-dir/link_list.txt'):
y.download('/test-dir/link_list.txt', 'link_list.txt')
Проверяю наличие файла. Так как, если файл существует, будет вызвана ошибка. И если файл есть, удаляю его. Если файла нет, загружаю его на диск. А потом скачиваю содержащийся уже на диске текстовый документ. Помимо удаления файла можно удалить целую директорию со всем ее содержимым. Для этого нужно указать, какую директорию удалить и параметр permanently поставить в значение True. Проверено. Работает.
y.remove('/test-dir/', permanently=True)
На этом, думаю, можно закончить рассмотрение этой полезной библиотеки. Возможно, что ее использование в резервном копировании данных, хотя бы на простом, бытовом уровне, поможет кому-то сохранить важные документы.
Спасибо за внимание. Надеюсь, что данная статья была вам полезна