Пример выгрузки файлов на Яндекс.Диск из Bash через официальный REST API.
Тут все просто.
- Идем по ссылке и входим под нужной учетной записью Яндекса, после чего нажимаем "Зарегистрировать новое приложение".
- Настраиваем новое приложение:
- Заполняем название приложения и его описание.
- Даем права для работы с API, а именно в разделе "Яндекс.Диск REST API" отмечаем "Доступ к информации о Диске" и "Доступ к папке приложения на Диске".
- В разделе "Платформы" устанавливаем флаг "Веб-сервисы", после чего заполняем параметр "Callback URL", нажав на "Подставить URL для разработки".
- Другие параметры приложения используйте по необходимости.
- После сохранения будет выполнено перенаправление на страницу с данными нового приложения. Сохраняем эту информацию себе.
- Переходим по ссылке и разрешаем доступ приложения.
https://oauth.yandex.ru/authorize?response_type=token&client_id=<ЗдесьIdПриложенияИзПрошлогоПункта>
- После подтверждения получим токен для работы с API, который будет действовать 1 год.
- Профит!
Вот простой скрипт для отправки файла на Яндекс.Диск. По необходимости в скрипт можно добавить проверки ошибок, логирование и так далее. Здесь лишь простейший пример.
#!/bin/bash
FILENAME="somefile.txt"
FILEPATH="/home/<username>/$FILENAME"
TOKEN='<ТокенЯндексДискAPI>'
# Простая функция для парсинга свойств из JSON
function parseJson()
{
local output
regex="(\"$1\":[\"]?)([^\",\}]+)([\"]?)"
[[ $2 =~ $regex ]] && output=${BASH_REMATCH[2]}
echo $output
}
# Функция для отправки файла
function sendFile
{
echo "Start sending a file: $1"
# Получаем URL для загрузки файла
sendUrlResponse=`curl -s -H "Authorization: OAuth $TOKEN" https://cloud-api.yandex.net:443/v1/disk/resources/upload/?path=app:/$FILENAME&overwrite=true`
sendUrl=$(parseJson 'href' $sendUrlResponse)
....
# Отправляем файл
sendFileResponse=`curl -s -T $FILEPATH -H "Authorization: OAuth $TOKEN" $sendUrl`
....
echo "Completing a file upload: $1"
}
sendFile $FILEPATH
Найти эти файлы в веб-интерфейсе можно перейдя на Яндекс.Диск в браузере, далее зайти в папку "Приложения". В ней вы увидите подкаталог с именем приложения, там все файлы и будут расположены.
Спасибо большое! Очень помогло, но есть маленькая ошибочка (?). По крайней мере, у меня на маке не работал флаг overwrite, пока я не взял весь URL в кавычке. Иначе терялся символ &.