YaDisk
YaDisk - это библиотека-клиент REST API Яндекс.Диска.
Документация доступна на Read the Docs (RU) и Read the Docs (EN).
Существует также асинхронная версия библиотеки: yadisk-async.
Установка
pip install yadisk
или
python setup.py install
Примеры
import yadisk
y = yadisk.YaDisk(token="<токен>")
# или
# y = yadisk.YaDisk("<id-приложения>", "<secret-приложения>", "<токен>")
# Проверяет, валиден ли токен
print(y.check_token())
# Получает общую информацию о диске
print(y.get_disk_info())
# Выводит содержимое "/some/path"
print(list(y.listdir("/some/path")))
# Загружает "file_to_upload.txt" в "/destination.txt"
y.upload("file_to_upload.txt", "/destination.txt")
# То же самое
with open("file_to_upload.txt", "rb") as f:
y.upload(f, "/destination.txt")
# Скачивает "/some-file-to-download.txt" в "downloaded.txt"
y.download("/some-file-to-download.txt", "downloaded.txt")
# Безвозвратно удаляет "/file-to-remove"
y.remove("/file-to-remove", permanently=True)
# Создаёт новую папку "/test-dir"
print(y.mkdir("/test-dir"))
История изменений
- Release 1.3.4 (2023-10-15)
- Методы
upload()
иdownload()
(и связянные с ними) теперь могут загружать/скачивать файлы, не поддерживающие операциюseek()
(например,stdin
иstdout
, при условии, что они открыты в режиме"rb"
или"wb"
), см. PR #31
- Методы
- Release 1.3.3 (2023-04-22)
- Пути вида
app:/
теперь работают правильно (см. issue #26)
- Пути вида
- Release 1.3.2 (2023-03-20)
- Исправлено issue #29: TypeError: 'type' object is not subscriptable
- Release 1.3.1 (2023-02-28)
- Исправлено issue #28:
TypeError
при вызовеdownload_public()
с параметромpath
- Исправлено
AttributeError
при вызовеResourceLinkObject.public_listdir()
- Исправлено issue #28:
- Release 1.3.0 (2023-01-30)
- Добавлены convenience-методы для объектов
...Object
(например, см.ResourceObject
) - Добавлены подсказки типов (type hints)
- Улучшены проверки ошибок и проверка ответа
- Добавлены
InvalidResponseError
,PayloadTooLargeError
,UploadTrafficLimitExceededError
- Добавлено несколько недостающих полей объектов
DiskInfoObject
иSystemFoldersObject
- Добавлены методы
rename()
,upload_by_link()
иdownload_by_link()
- Добавлен аттрибут
default_args
объектаYaDisk
download()
иupload()
теперь возвращаютResourceLinkObject
- До этого возвращаемые объекты
LinkObject
были заменены более конкретными подклассами ConnectionError
теперь тоже вызывает повторную попытку
- Добавлены convenience-методы для объектов
- Release 1.2.19 (2023-01-20)
- Исправлено неправильное поведение фикса из 1.2.18 для путей
disk:
иtrash:
.
- Исправлено неправильное поведение фикса из 1.2.18 для путей
- Release 1.2.18 (2023-01-20)
- Исправлено issue #26: символ ':' в именах файлов приводит к
BadRequestError
. Это поведение вызвано работой самого REST API Яндекс.Диска, но было исправлено на уровне библиотеки.
- Исправлено issue #26: символ ':' в именах файлов приводит к
- Release 1.2.17 (2022-12-11)
- Исправлен баг, связанный с автоматическим закрытием сессии. Использование
метода
__del__()
приводило в некоторых случаях к ошибкеReferenceError
(ошибка игнорировалась, но сообщение выводилось). Баг проявляется по большей части в старых версиях Python (например 3.4).
- Исправлен баг, связанный с автоматическим закрытием сессии. Использование
метода
- Release 1.2.16 (2022-08-17)
- Исправлен баг в
check_token()
: функция могла вызватьForbiddenError
, если у приложения недостатчно прав (issue #23).
- Исправлен баг в
- Release 1.2.15 (2021-12-31)
- Исправлено: не распознавались ссылки на асинхронные операции, если они
использовали
http://
(вместоhttps://
). Иногда Яндекс.Диск может вернутьhttp://
ссылку на асинхронную операцию. Теперь обе версии ссылок распознаются правильно, при этом, при получении информации об операции (черезget_operation_status()
) всегда используетсяhttps://
версия ссылки, даже если Яндекс.Диск вернулhttp://
.
- Исправлено: не распознавались ссылки на асинхронные операции, если они
использовали
- Release 1.2.14 (2019-03-26)
- Исправлена ошибка
TypeError
в функцияхget_public_*
при использовании с параметромpath
(issue #7) - Добавлен аттрибут
unlimited_autoupload_enabled
дляDiskInfoObject
- Исправлена ошибка
- Release 1.2.13 (2019-02-23)
- Добавлен
md5
параметр дляremove()
- Добавлен
UserPublicInfoObject
- Добавлен аттрибут
country
дляUserObject
- Добавлен аттрибут
photoslice_time
дляResourceObject
,PublicResourceObject
иTrashResourceObject
- Добавлен
- Release 1.2.12 (2018-10-11)
- Исправлен баг: не работает параметр fields в listdir() (issue #4)
- Release 1.2.11 (2018-06-30)
- Добавлен недостающий параметр
sort
дляget_meta()
- Добавлены аттрибуты
file
иantivirus_status
дляResourceObject
,PublicResourceObject
иTrashResourceObject
- Добавлен параметр
headers
- Исправлена опечатка в
download()
иdownload_public()
(issue #2) - Убран параметр
*args
- Добавлен недостающий параметр
- Release 1.2.10 (2018-06-14)
- Исправлено поведение
timeout=None
.None
должен означать „без таймаута“, но в предыдущих версиях значениеNone
было синонимично со стандартным таймаутом.
- Исправлено поведение
- Release 1.2.9 (2018-04-28)
- Изменена лицензия на LGPLv3 (см.
COPYING
иCOPYING.lesser
) - Другие изменения информации о пакете
- Изменена лицензия на LGPLv3 (см.
- Release 1.2.8 (2018-04-17)
- Исправлено несколько опечаток: у
PublicResourceListObject.items
иTrashResourceListObject.items
были неправильные типы данных - Псевдонимы полей в параметре
fields
заменяются при выполнении запросов API (например,embedded
->_embedded
)
- Исправлено несколько опечаток: у
- Release 1.2.7 (2018-04-15)
- Исправлен баг перемотки файла при загрузке/скачивании после повторной попытки
- Release 1.2.6 (2018-04-13)
- Теперь объекты сессий
requests
кэшируются, чтобы их можно было переиспользовать (иногда может существенно ускорить выполнение запросов) keep-alive
отключается при загрузке/скачивании файлов по умолчанию
- Теперь объекты сессий
- Release 1.2.5 (2018-03-31)
- Исправлен баг (ошибка на единицу) в
utils.auto_retry()
(иногда мог вызватьAttributeError
) - Повторные попытки применяются для
upload()
,download()
иdownload_public()
целиком - Задано
stream=True
дляdownload()
иdownload_public()
- Другие мелкие исправления
- Исправлен баг (ошибка на единицу) в
- Release 1.2.4 (2018-02-19)
- Исправлена опечатка (
TokenObject.exprires_in
->TokenObject.expires_in
)
- Исправлена опечатка (
- Release 1.2.3 (2018-01-20)
- Исправлено
TypeError
при вызовеWrongResourceTypeError
- Исправлено
- Release 1.2.2 (2018-01-19)
refresh_token()
больше не требует валидный или пустой токен.
- Release 1.2.1 (2018-01-14)
- Исправлена неработоспособность повторных попыток.
- Release 1.2.0 (2018-01-14)
- Исправлено использование
n_retries=0
вupload()
,download()
иdownload_public()
upload()
,download()
иdownload_public()
больше не возвращают ничего (см. документацию)- Добавлен модуль
utils
(см. документацию) - Добавлены
RetriableYaDiskError
,WrongResourceTypeError
,BadGatewayError
иGatewayTimeoutError
listdir()
теперь вызываетWrongResourceTypeError
вместоNotADirectoryError
- Исправлено использование
- Release 1.1.1 (2017-12-29)
- Исправлена обработка аргументов в
upload()
,download()
иdownload_public()
. До этого использованиеn_retries
иretry_interval
вызывало исключение (TypeError
).
- Исправлена обработка аргументов в
- Release 1.1.0 (2017-12-27)
- Усовершенствованные исключения (см. документацию)
- Добавлена поддержка параметра
force_async
- Мелкие исправления багов
- Release 1.0.8 (2017-11-29)
- Исправлен ещё один баг в
listdir()
- Исправлен ещё один баг в
- Release 1.0.7 (2017-11-04)
- Добавлен
install_requires
вsetup.py
- Добавлен
- Release 1.0.6 (2017-11-04)
- Некоторые функции теперь возвращают
OperationLinkObject
- Некоторые функции теперь возвращают
- Release 1.0.5 (2017-10-29)
- Исправлен
setup.py
, теперь исключает тесты
- Исправлен
- Release 1.0.4 (2017-10-23)
- Исправлены баги в
upload
,download
иlistdir
- Значение по-умолчанию
limit
вlistdir
установлено в10000
- Исправлены баги в
- Release 1.0.3 (2017-10-22)
- Добавлен модуль
settings
- Добавлен модуль
- Release 1.0.2 (2017-10-19)
- Исправлена функция
get_code_url
(добавлены недостающие параметры)
- Исправлена функция
- Release 1.0.1 (2017-10-18)
- Исправлен серьёзный баг в
GetTokenRequest
(добавлен недостающий параметр)
- Исправлен серьёзный баг в
- Release 1.0.0 (2017-10-18)
- Первый релиз