Share:

Отправка файлов в Yandex Disk через REST API из Bash

YPermitinвDevOps

2022-04-04

#DevOps

#bash

#Яндекс.Диск

#API

Подготовка токена для работы с API

Вся информация по работе с 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

Найти эти файлы в веб-интерфейсе можно перейдя на Яндекс.Диск в браузере, далее зайти в папку “Приложения”. В ней вы увидите подкаталог с именем приложения, там все файлы и будут расположены.

Полезные ссылки

Y

YPermitin

.NET, TSQL, DevOps, 1C:Enterprise

Developer, just developer.

Поделиться

Другие статьи

Расширение для SQL Server. Быстро и просто. SQLCLR снова в деле
Расширение для SQL Server. Быстро и просто. SQLCLR снова в деле
Решение проблем с модулями VMware в Ubuntu 22.04
Решение проблем с модулями VMware в Ubuntu 22.04
Берем процессы под контроль в .NET
Берем процессы под контроль в .NET

Все статьи от автора: YPermitin

Copyright © 2024 Убежище инженера