Некоторые картинки не загружаются из РФ и РК, используйте VPN.

четверг, 3 марта 2016 г.

[Soft] Яндекс.Диск чистим корзину из cmd


Многие используют сервисы облачного хранения файлов для резервных копий. Одним из приоритетов является Яндекс.Диск, из-за изначального объема места (аж 10Гб). У мэйл.ру некоторые отхапали и 1Тб, но скорость загрузки и надежность оставляет желать лучшего.
У Я.Диск есть неприятный минус - объем корзины является частью общего, т.о. при постоянном обновлении файлов (особенно крупных) корзина заполняется в считанные дни (у кого и часы). Корзина конечно чистится автоматом, но по истечении 30 дней с момента удаления. Ручной настройки интервала, к сожалению, нет.



Некоторое время назад я решил поискать как же это сделать. Сделать можно, через API Яндекса. Инструкция по которой делал я, была расчитанна на *nix системы, здесь же я расскажу о Windows системах (к сожалению, я не смог найти ту инструкцию повторно, чтобы приложить к статье).

Приступим.
Для начала установим Я.Диск на ПК.
Качаем curl (выбираем свою битность, по необходимости качаем C++)
Создаем где-нибудь папочку аля "Скрипт очистки корзины Яндекса", разархивируем туда curl.exe из папки winssl в архиве

Дальше нам нужно зарегистрировать приложение. Переходим

Заполняем данные:
Получили ID и пароль
 Теперь собираем url для получения токена:
https://oauth.yandex.ru/authorize?response_type=token&display=popup&client_id=ВАШ_ID
Вставляем в строку адреса и переходим

 Вот мы и получили наш токен

Создаем исполняемый файл со следующим содержимым:

cd %~dp0 

curl.exe -s -H "Authorization: OAuth ВАШ_ТОКЕН" -X "DELETE" https://cloud-api.yandex.net/v1/disk/trash/resources/?path=


Файл сохраняем в ту же папку, где лежит curl
Если выполнить этот файл, то корзина должна очиститься.

Далее создаем задание в планировщике заданий:





Вот и все. Если все правильно сделано, то корзина будет вычищаться каждый день в 12 часов дня (если ПК включен и подключен к интернету). 

Сервер Yandex возвращает ответ при наличии файлов в корзине, иначе будет пусто. Также пусто будет при ошибке, так как curl запускаем с ключом -s (silent). Если нет результата от выполнения, убираем ключ и смотрим ответ curl`a. Вполне вероятен такой ответ:
schannel: failed to retrieve ALPN result
Собственно  ответа на просторах я не нашел. Но в таком случае можно попробовать  openssl (распаковываем содержимое папки из архива (3 файла)), и добавляем ключ -k, если программа матерится на сертификаты.

2 комментария:

  1. После выполнения батника получаю ошибки
    "display" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.
    "client_id" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    ОтветитьУдалить