Очистка корзины Яндекс.Диска через API в Debian и Ubuntu

  • Автор:

yandex-disk-trash-000.pngВ одной из наших прошлых записей мы рассказывали об установке консольного клиента Яндекс.Диск на сервера Debian/Ubuntu. Но у консольного клиента есть существенный недостаток - отсутствие возможности очищать корзину. Несмотря на то, что добавить данный функционал пользователи просят довольно давно - воз и ныне там, поэтому будем справляться собственными силами, а поможет нам в этом REST API Диска. На первый взгляд выглядит сложно, но это сложность мнимая, тем более что мы сразу предлагаем фактически готовое решение.

Данное решение придумано не нами и достаточно давно присутствует в сети, поэтому мы сначала и не планировали публиковать его у себя, но потом решили его еще раз проверить и выпустить данный материал, чтобы вся нужная информация была размещена в одном месте.

Прежде всего нам нужно авторизоваться на Яндексе под тем аккаунтом, который используется для доступа к Яндекс.Диску. Для этого достаточно войти в любой сервис Яндекса, не обязательно Диск, можно и в Почту.

Теперь нам нужно перейти на Oauth-сервер и зарегистрировать там новое приложение для доступа к данным в сервисах Яндекса, для этого просто перейдите по ссылке: https://oauth.yandex.ru

yandex-disk-trash-001.pngДля приложения обязательно указываем наименование, следует сделать его информативным, чтобы вы всегда могли вспомнить, что это и для чего.

yandex-disk-trash-002.pngНиже ставим галочку Веб-сервисы и нажимаем на ссылку Подставить URL для разработки, в поле Callback URL автоматически появится адрес.

yandex-disk-trash-003.png

Прокручиваем страницу еще ниже, до раздела Яндекс.Диск REST API и включаем в нем все опции доступа.

yandex-disk-trash-004.png

После чего отправляемся в самый низ страницы, где нажимаем кнопку Создать приложение, в результате вы увидите примерно следующее окно, нас здесь интересует ID-приложения, скопируйте его куда-нибудь (либо не закрывайте эту страничку).

yandex-disk-trash-005.png

Для того, чтобы наше приложение могло аутентифицироваться на серверах Яндекса получим токен, для этого сформируйте специальную ссылку:

https://oauth.yandex.ru/authorize?response_type=token&display=popup&client_id=ID

Где в качестве ID используйте полученное на предыдущем шаге значение. Перейдите по ней и подтвердите предоставление доступа.

yandex-disk-trash-006.pngПосле чего на экране появится длинная 40-символьная строка - ваш токен, сохраните его в надежном месте. Помните, что он дает полный доступ к вашему диску, поэтому доступ к нему следует ограничить.

Получив токен, можно переходить к написанию скрипта очистки корзины, для его работы нам понадобится curl, его можно установить командой:

apt install curl

Теперь создадим сам скрипт, его можно разместить в любом удобном месте, в нашем случае это будет /etc

touch /etc/yandex_trash

Откроем его любым редактором и внесем следующий текст:

#!/bin/bash
curl -s -H "Authorization: OAuth TOKEN" -X "DELETE" https://cloud-api.yandex.net/v1/disk/trash/resources/?path=

где TOKEN - строка полученного вами токена.

Затем сделаем файл исполняемым:

chmod +x /etc/yandex_trash

Для проверки можно просто запустить скрипт, после чего должна произойти очистка корзины нужного аккаунта. После чего его можно вызывать по нужному расписанию с помощью cron или использовать данную конструкцию в иных скриптах.

Также данный скрипт (точнее строку с обращением к API) можно использовать и в Windows, для этого вам потребуется установить curl для Windows и указать полный путь к исполняемому файлу в скрипте (либо добавить его в переменную PATH).

По материалам: Яндекс.Диск: очистка корзины из Debian

Дополнительные материалы:


  1. Установка консольного клиента Яндекс.Диск на Debian / Ubuntu
  2. Очистка корзины Яндекс.Диска через API в Debian и Ubuntu