Для работы с Yandex Disk REST API на Python установите библиотеку requests. Она упрощает отправку HTTP-запросов и обработку ответов. Используйте команду pip install requests
, чтобы добавить её в ваш проект. Это базовый инструмент, который поможет вам быстро начать взаимодействие с API.
После установки библиотеки получите OAuth-токен через Yandex OAuth. Перейдите в личный кабинет разработчика, создайте приложение и скопируйте токен. Этот токен потребуется для авторизации всех запросов к API. Убедитесь, что храните его в безопасном месте, например, в переменных окружения.
Начните с простого запроса, чтобы проверить доступ к вашему диску. Отправьте GET-запрос на эндпоинт https://cloud-api.yandex.net/v1/disk
, добавив токен в заголовок Authorization
. Ответ вернёт информацию о вашем диске, включая доступное пространство и используемые ресурсы. Это поможет убедиться, что подключение работает корректно.
Для загрузки файлов на Yandex Disk используйте метод POST
на эндпоинт https://cloud-api.yandex.net/v1/disk/resources/upload
. Укажите путь на диске и ссылку на файл, который хотите загрузить. API вернёт URL для загрузки, после чего вы сможете отправить файл на сервер. Этот подход особенно полезен для автоматизации процессов резервного копирования.
Если вам нужно скачать файл, запросите ссылку через эндпоинт https://cloud-api.yandex.net/v1/disk/resources/download
, указав путь к файлу. API предоставит временную ссылку для загрузки, которую можно использовать в вашем приложении. Это удобно для создания инструментов, которые работают с данными на Yandex Disk.
Получение доступа к Yandex Disk API через Python
Для начала работы с Yandex Disk API зарегистрируйте приложение в Yandex OAuth. После регистрации вы получите Client ID и Client Secret, которые потребуются для авторизации.
Установите библиотеку requests для отправки HTTP-запросов. Если она еще не установлена, выполните команду:
pip install requests
Создайте скрипт для получения токена доступа. Используйте следующий код, заменив YOUR_CLIENT_ID и YOUR_CLIENT_SECRET на ваши данные:
import requests
CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
AUTH_URL = 'https://oauth.yandex.ru/authorize'
TOKEN_URL = 'https://oauth.yandex.ru/token'
# Шаг 1: Получите код авторизации
auth_params = {
'response_type': 'code',
'client_id': CLIENT_ID
}
auth_response = requests.get(AUTH_URL, params=auth_params)
print(f"Перейдите по ссылке для авторизации: {auth_response.url}")
auth_code = input("Введите код авторизации из URL: ")
# Шаг 2: Получите токен доступа
token_data = {
'grant_type': 'authorization_code',
'code': auth_code,
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET
}
token_response = requests.post(TOKEN_URL, data=token_data)
access_token = token_response.json().get('access_token')
print(f"Ваш токен доступа: {access_token}")
Сохраните полученный токен в переменной или файле для дальнейшего использования. Токен действителен в течение года, но его можно обновить с помощью refresh_token, если он указан в ответе.
Теперь вы можете использовать токен для выполнения запросов к Yandex Disk API. Например, чтобы получить информацию о диске, отправьте GET-запрос:
headers = {
'Authorization': f'OAuth {access_token}'
}
response = requests.get('https://cloud-api.yandex.net/v1/disk', headers=headers)
print(response.json())
Убедитесь, что токен защищен и не передается в открытом виде. Для безопасного хранения используйте переменные окружения или специализированные библиотеки, такие как python-decouple.
Регистрация приложения в Yandex OAuth
Перейдите на страницу разработчика Yandex OAuth и авторизуйтесь под своим аккаунтом Яндекс. Создайте новое приложение, выбрав тип «Веб-сервис» или «Установленное приложение» в зависимости от вашего сценария использования.
Заполните обязательные поля:
- Название приложения – укажите понятное имя, которое будет отображаться пользователям при авторизации.
- Описание – кратко опишите функционал вашего приложения.
- Callback URL – укажите URL, на который Яндекс будет перенаправлять пользователя после авторизации. Для локальной разработки используйте
http://localhost
илиhttp://127.0.0.1
.
После создания приложения, на странице его настроек скопируйте ID приложения и секретный ключ. Эти данные понадобятся для работы с API.
Настройте разрешения для вашего приложения. Для работы с Yandex Disk выберите:
yadisk:read
– доступ на чтение файлов и папок.yadisk:write
– доступ на запись и изменение файлов.
Сохраните изменения и протестируйте авторизацию. Используйте эту ссылку, заменив ВАШ_ID_ПРИЛОЖЕНИЯ
на реальный ID. После успешной авторизации вы получите код, который можно обменять на токен доступа.
Получение токена доступа для API
Для начала работы с Yandex Disk REST API необходимо получить OAuth-токен. Перейдите в Yandex OAuth и создайте новое приложение. Укажите тип приложения «Веб-сервис» и задайте callback URL, например, https://localhost
.
После создания приложения, получите Client ID и Client Secret. Эти данные понадобятся для авторизации. Используйте следующий URL для запроса токена:
https://oauth.yandex.ru/authorize?response_type=code&client_id=ВАШ_CLIENT_ID
После перехода по ссылке, Yandex запросит разрешение на доступ к данным. После подтверждения, вы получите временный код. Обменяйте его на токен, отправив POST-запрос:
Параметр | Значение |
---|---|
URL | https://oauth.yandex.ru/token |
Метод | POST |
Тело запроса | grant_type=authorization_code&code=ВАШ_КОД&client_id=ВАШ_CLIENT_ID&client_secret=ВАШ_CLIENT_SECRET |
В ответ вы получите JSON с токеном доступа. Сохраните его для дальнейшего использования. Пример ответа:
{
"access_token": "ВАШ_ТОКЕН",
"token_type": "bearer",
"expires_in": 31536000
}
Теперь вы можете использовать токен для авторизации в API. Добавляйте его в заголовки запросов:
Authorization: OAuth ВАШ_ТОКЕН
Настройка окружения для работы с библиотеками Python
Установите Python версии 3.7 или выше, если это ещё не сделано. Проверьте версию командой python --version
или python3 --version
. Для работы с Yandex Disk REST API потребуется установить несколько библиотек, включая requests
и oauthlib
.
Создайте виртуальное окружение, чтобы изолировать зависимости проекта. Используйте команду python -m venv venv
для его создания. Активируйте окружение: на Windows выполните venvScriptsactivate
, на macOS или Linux – source venv/bin/activate
.
Установите необходимые библиотеки через pip
. Выполните команду pip install requests oauthlib
. Для удобства управления зависимостями создайте файл requirements.txt
и добавьте туда установленные пакеты.
Для работы с Yandex Disk REST API потребуется OAuth-токен. Получите его через Yandex OAuth. Сохраните токен в переменной окружения или в конфигурационном файле, чтобы не хранить его в коде.
Проверьте корректность настройки окружения, выполнив простой запрос к API. Например, используйте библиотеку requests
для получения списка файлов:
import requests
url = "https://cloud-api.yandex.net/v1/disk/resources/files"
headers = {
"Authorization": "OAuth YOUR_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
Если ответ содержит список файлов, окружение настроено правильно. Теперь вы готовы к разработке с использованием Yandex Disk REST API.
Работа с файлами и папками на Yandex Disk через API
Для работы с файлами и папками на Yandex Disk используйте методы API, которые позволяют загружать, скачивать, перемещать и удалять данные. Начните с получения OAuth-токена, чтобы авторизовать запросы. Для этого зарегистрируйте приложение в Yandex OAuth и получите токен.
- Загрузка файлов: Используйте метод
PUT /v1/disk/resources/upload
. Укажите путь к файлу на диске и получите ссылку для загрузки. Отправьте файл по этой ссылке с помощью HTTP-запроса. - Скачивание файлов: Примените метод
GET /v1/disk/resources/download
. Укажите путь к файлу, и API вернет ссылку для скачивания. - Создание папок: Для создания новой папки используйте метод
PUT /v1/disk/resources
. Укажите путь к новой папке в параметреpath
. - Перемещение файлов и папок: Используйте метод
POST /v1/disk/resources/move
. Укажите текущий путь и новый путь в параметрахfrom
иto
. - Удаление файлов и папок: Примените метод
DELETE /v1/disk/resources
. Укажите путь к удаляемому объекту.
Для работы с API на Python используйте библиотеку requests
. Пример кода для загрузки файла:
import requests
url = "https://cloud-api.yandex.net/v1/disk/resources/upload"
headers = {"Authorization": "OAuth YOUR_TOKEN"}
params = {"path": "/my_folder/my_file.txt", "overwrite": "true"}
response = requests.get(url, headers=headers, params=params)
upload_url = response.json().get("href")
with open("my_file.txt", "rb") as file:
requests.put(upload_url, data=file)
Обрабатывайте ошибки, проверяя статус ответа. Например, код 404
указывает на отсутствие ресурса, а 403
– на недостаток прав доступа.
Для упрощения работы с API создайте функции, которые инкапсулируют логику запросов. Это сделает код более читаемым и удобным для повторного использования.
Загрузка файлов на Yandex Disk: шаги и примеры кода
Для загрузки файлов на Yandex Disk используйте метод PUT
с указанием URL-адреса, полученного через метод GET /v1/disk/resources/upload
. Этот метод возвращает ссылку для прямой загрузки файла.
Сначала получите ссылку для загрузки, отправив запрос с указанием пути на Яндекс Диске, куда вы хотите загрузить файл. Пример запроса:
import requests
url = "https://cloud-api.yandex.net/v1/disk/resources/upload"
headers = {
"Authorization": "OAuth YOUR_ACCESS_TOKEN"
}
params = {
"path": "/my_folder/my_file.txt",
"overwrite": "true"
}
response = requests.get(url, headers=headers, params=params)
upload_url = response.json().get("href")
После получения ссылки отправьте файл на сервер с помощью метода PUT
. Пример кода:
with open("my_file.txt", "rb") as file:
response = requests.put(upload_url, files={"file": file})
if response.status_code == 201:
print("Файл успешно загружен.")
else:
print("Ошибка при загрузке файла:", response.status_code)
Убедитесь, что файл не превышает допустимый размер. Для файлов больше 2 ГБ используйте метод загрузки по частям, доступный через API.
Если вам нужно загрузить несколько файлов, создайте цикл для обработки каждого файла отдельно. Это упростит управление процессом и обработку ошибок.
Проверяйте статус ответа после каждой операции. Код 201 означает успешную загрузку, а другие коды указывают на ошибки, которые можно обработать в зависимости от ситуации.
Скачивание файлов с Yandex Disk: реализация и советы
Для скачивания файлов с Yandex Disk используйте метод GET /v1/disk/resources/download
. Этот метод возвращает ссылку для загрузки, которая действительна в течение ограниченного времени. Пример запроса на Python с использованием библиотеки requests
:
import requests
url = "https://cloud-api.yandex.net/v1/disk/resources/download"
headers = {"Authorization": "OAuth YOUR_TOKEN"}
params = {"path": "/path/to/your/file.txt"}
response = requests.get(url, headers=headers, params=params)
download_url = response.json().get("href")
if download_url:
file_response = requests.get(download_url)
with open("file.txt", "wb") as file:
file.write(file_response.content)
Обратите внимание, что ссылка для скачивания действительна только 30 минут. Если время истекло, запросите новую ссылку.
Для больших файлов рекомендуется использовать потоковое скачивание. Это позволяет избежать загрузки всего файла в память:
with requests.get(download_url, stream=True) as r:
r.raise_for_status()
with open("large_file.zip", "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
Если вы работаете с несколькими файлами, скачивайте их последовательно или используйте асинхронные запросы с библиотекой aiohttp
.
Учтите ограничения API: максимальный размер файла для скачивания – 10 ГБ. Для файлов большего размера используйте метод GET /v1/disk/resources
с параметром limit
для получения списка файлов и их пошагового скачивания.
Параметр | Описание |
---|---|
path |
Путь к файлу на Yandex Disk. |
fields |
Дополнительные поля ответа, например, size или modified . |
Проверяйте статус ответа API. Код 200
указывает на успешный запрос, а 404
– на отсутствие файла по указанному пути.
Для упрощения работы с API создайте класс-обёртку, который будет обрабатывать авторизацию, запросы и ошибки. Это сделает код более читаемым и поддерживаемым.
Удаление и изменение структуры папок на Yandex Disk
Для удаления папки используйте метод DELETE с указанием пути к папке в URL. Например, запрос DELETE /v1/disk/resources?path=/folder_name удалит папку folder_name и все её содержимое. Убедитесь, что у вас есть права на удаление, иначе запрос завершится ошибкой.
Чтобы изменить структуру папок, переместите нужную папку с помощью метода POST и параметра from и path. Например, запрос POST /v1/disk/resources/move?from=/old_folder&path=/new_folder переместит папку old_folder в новое расположение new_folder. Если целевая папка не существует, она будет создана автоматически.
Для переименования папки используйте тот же метод POST, указав новый путь с изменённым именем. Например, запрос POST /v1/disk/resources/move?from=/old_name&path=/new_name переименует папку old_name в new_name.
Перед выполнением операций проверьте наличие папки с помощью метода GET и параметра path. Это поможет избежать ошибок, связанных с несуществующими ресурсами.
Все запросы должны включать токен авторизации в заголовке Authorization. Используйте OAuth для получения токена и управления доступом к вашему Yandex Disk.
Получение информации о файлах: запросы и обработка данных
Для получения информации о файлах в Yandex Disk используйте метод GET /v1/disk/resources
. Укажите путь к файлу или папке в параметре path
, чтобы получить метаданные, такие как размер, тип, дата создания и изменения.
- Убедитесь, что у вас есть доступ к файлу. Если файл находится в публичной папке, добавьте параметр
public_key
. - Используйте параметр
fields
, чтобы выбрать только нужные данные. Например,fields=name,size,modified
вернет имя, размер и дату изменения файла. - Для обработки ошибок проверяйте статус ответа. Код 200 означает успешный запрос, а 404 – файл не найден.
Пример запроса с использованием библиотеки requests
:
import requests
url = "https://cloud-api.yandex.net/v1/disk/resources"
params = {
"path": "/my_folder/my_file.txt",
"fields": "name,size,modified"
}
headers = {
"Authorization": "OAuth YOUR_ACCESS_TOKEN"
}
response = requests.get(url, params=params, headers=headers)
if response.status_code == 200:
data = response.json()
print(f"Имя файла: {data['name']}")
print(f"Размер: {data['size']} байт")
print(f"Дата изменения: {data['modified']}")
else:
print(f"Ошибка: {response.status_code}")
Если вам нужно получить информацию о нескольких файлах, используйте метод GET /v1/disk/resources/files
. Он вернет список файлов с их основными характеристиками.
- Укажите параметр
limit
, чтобы ограничить количество возвращаемых файлов. - Для пагинации используйте параметр
offset
, чтобы получить следующую порцию данных.
Пример обработки списка файлов:
url = "https://cloud-api.yandex.net/v1/disk/resources/files"
params = {
"limit": 10,
"offset": 0
}
headers = {
"Authorization": "OAuth YOUR_ACCESS_TOKEN"
}
response = requests.get(url, params=params, headers=headers)
if response.status_code == 200:
files = response.json()["items"]
for file in files:
print(f"Имя: {file['name']}, Размер: {file['size']} байт")
else:
print(f"Ошибка: {response.status_code}")
Для работы с большими объемами данных используйте асинхронные запросы или библиотеки, такие как aiohttp
, чтобы ускорить процесс.