Package: yadisk
English version of this documentYaDisk - это библиотека-клиент REST API Яндекс.Диска.Документация доступна наRead the Docs (RU)иRead the Docs (EN).Установкаyadiskподдерживает несколько HTTP библиотек и реализует одновременно как синхронный,
так и асинхронный API.На данный момент поддерживаются следующие HTTP библиотеки:requests(используется по умолчанию для синхронного API)httpx(синхронный и асинхронный API, используется по умолчанию для асинхронного API)aiohttp(асинхронный API)pycurl(синхронный API)Для синхронного API (устанавливаетrequests):pipinstallyadisk[sync_defaults]Для асинхронного API (устанавливаетhttpxиaiofiles):pipinstallyadisk[async_defaults]Вы можете также вручную установить нужные библиотеки:# Для использования совместно с pycurlpipinstallyadiskpycurl# Для использования совместно с aiohttp, также установит aiofilespipinstallyadisk[async_files]aiohttpПримерыСинхронный APIimportyadiskclient=yadisk.Client(token="<токен>")# или# client = yadisk.Client("<id-приложения>", "<secret-приложения>", "<токен>")# Вы можете использовать либо конструкцию with, либо вручную вызвать client.close() в концеwithclient:# Проверяет, валиден ли токенprint(client.check_token())# Получает общую информацию о дискеprint(client.get_disk_info())# Выводит содержимое "/some/path"print(list(client.listdir("/some/path")))# Загружает "file_to_upload.txt" в "/destination.txt"client.upload("file_to_upload.txt","/destination.txt")# То же самоеwithopen("file_to_upload.txt","rb")asf:client.upload(f,"/destination.txt")# Скачивает "/some-file-to-download.txt" в "downloaded.txt"client.download("/some-file-to-download.txt","downloaded.txt")# Безвозвратно удаляет "/file-to-remove"client.remove("/file-to-remove",permanently=True)# Создаёт новую папку "/test-dir"print(client.mkdir("/test-dir"))Асинхронный APIimportyadiskimportaiofilesclient=yadisk.AsyncClient(token="<token>")# или# client = yadisk.AsyncClient("<application-id>", "<application-secret>", "<token>")# Вы можете использовать либо конструкцию with, либо вручную вызвать client.close() в концеasyncwithclient:# Проверяет, валиден ли токенprint(awaitclient.check_token())# Получает общую информацию о дискеprint(awaitclient.get_disk_info())# Выводит содержимое "/some/path"print([iasyncforiinawaitclient.listdir("/some/path")])# Загружает "file_to_upload.txt" в "/destination.txt"awaitclient.upload("file_to_upload.txt","/destination.txt")# То же самоеasyncwithaiofiles.open("file_to_upload.txt","rb")asf:awaitclient.upload(f,"/destination.txt")# То же самое, но с обычными файламиwithopen("file_to_upload.txt","rb")asf:awaitclient.upload(f,"/destination.txt")# Скачивает "/some-file-to-download.txt" в "downloaded.txt"awaitclient.download("/some-file-to-download.txt","downloaded.txt")# То же самоеasyncwithaiofiles.open("downloaded.txt","wb")asf:awaitclient.download("/some-file-to-download.txt",f)# Безвозвратно удаляет "/file-to-remove"awaitclient.remove("/file-to-remove",permanently=True)# Создаёт новую папку "/test-dir"print(awaitclient.mkdir("/test-dir"))История измененийRelease 2.1.0 (2024-01-03)Исправлен баг, из-за которого параметры в теле POST-запроса неправильно кодировалисьИсправлен баг вPycURLSession.send_request(), из-за которого
переданные заголовки игнорировалисьRequestsSession.close()теперь закрывает сессию для всех потоковВсе методыClientиAsyncClientтеперь используют
существующую сессиюУдалены аттрибутsession_factoryи методmake_session()классовClientиAsyncClientКласс сессии теперь может быть указан в качестве строки
(см.Client/AsyncClient)Добавлены методы :code”Client.get_device_code()/AsyncClient.get_device_code()Добавлены методыClient.get_token_from_device_code()/AsyncClient.get_token_from_device_code()Добавлен недостающий параметрredirect_uriдляClient.get_auth_url()/AsyncClient.get_auth_url()иClient.get_code_url()/AsyncClient.get_code_url()Добавлена поддержка параметров PKCE дляClient.get_auth_url()/AsyncClient.get_auth_url(),Client.get_code_url()/AsyncClient.get_code_url()иClient.get_token()/AsyncClient.get_token()Добавлен аттрибутscopeдляTokenObjectДобавлены новые классы исключений:InvalidClientError,InvalidGrantError,AuthorizationPendingError,BadVerificationCodeErrorиUnsupportedTokenTypeErrorRelease 2.0.0 (2023-12-12)Библиотека теперь предоставляет как синхронный, так и асинхронный API
(см.ВведениеиСправочник API)Теперь поддерживается несколько HTTP библиотек (см.Доступные реализации сессийдля полного списка)Теперь возможно добавить поддержку любой HTTP библиотеки
(см.Интерфейс Session)requests- теперь опциональная зависимость (хотя всё ещё используется
по умолчанию для синхронного API)Обратите внимание, что аргументы, специфичные для requests теперь передаются
по другому (см.Доступные реализации сессий)Предпочитаемые HTTP библиотеки теперь должны быть установлены явным образом
(см.Введение)Client.upload()иClient.upload_by_link()теперь могут
принимать функцию, возвращающую итератор (или генератор) в качестве полезной
нагрузкиRelease 1.3.4 (2023-10-15)Методыupload()иdownload()(и связянные с ними) теперь
могут загружать/скачивать файлы, не поддерживающие операциюseek()(например,stdinиstdout, при условии, что они открыты в
режиме"rb"или"wb"), см.PR #31Release 1.3.3 (2023-04-22)Пути видаapp:/теперь работают правильно (см.issue #26)Release 1.3.2 (2023-03-20)Исправленоissue #29: TypeError: ‘type’ object is not subscriptableRelease 1.3.1 (2023-02-28)Исправленоissue #28:TypeErrorпри вызовеdownload_public()с параметромpathИсправленоAttributeErrorпри вызовеResourceLinkObject.public_listdir()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объектаYaDiskdownload()иupload()теперь возвращаютResourceLinkObjectДо этого возвращаемые объектыLinkObjectбыли заменены более конкретными подклассамиConnectionErrorтеперь тоже вызывает повторную попыткуRelease 1.2.19 (2023-01-20)Исправлено неправильное поведение фикса из 1.2.18 для путейdisk:иtrash:.Release 1.2.18 (2023-01-20)Исправленоissue #26: символ ‘:’ в именах файлов приводит кBadRequestError. Это поведение вызвано работой самого REST API
Яндекс.Диска, но было исправлено на уровне библиотеки.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дляDiskInfoObjectRelease 1.2.13 (2019-02-23)Добавленmd5параметр дляremove()ДобавленUserPublicInfoObjectДобавлен аттрибутcountryдляUserObjectДобавлен аттрибутphotoslice_timeдляResourceObject,PublicResourceObjectиTrashResourceObjectRelease 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)Убран параметр*argsRelease 1.2.10 (2018-06-14)Исправлено поведениеtimeout=None.Noneдолжен означать „без таймаута“,
но в предыдущих версиях значениеNoneбыло синонимично со стандартным таймаутом.Release 1.2.9 (2018-04-28)Изменена лицензия на LGPLv3 (см.COPYINGиCOPYING.lesser)Другие изменения информации о пакете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при вызовеWrongResourceTypeErrorRelease 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иGatewayTimeoutErrorlistdir()теперь вызываетWrongResourceTypeErrorвместоNotADirectoryErrorRelease 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.pyRelease 1.0.6 (2017-11-04)Некоторые функции теперь возвращаютOperationLinkObjectRelease 1.0.5 (2017-10-29)Исправленsetup.py, теперь исключает тестыRelease 1.0.4 (2017-10-23)Исправлены баги вupload,downloadиlistdirЗначение по-умолчаниюlimitвlistdirустановлено в10000Release 1.0.3 (2017-10-22)Добавлен модульsettingsRelease 1.0.2 (2017-10-19)Исправлена функцияget_code_url(добавлены недостающие параметры)Release 1.0.1 (2017-10-18)Исправлен серьёзный баг вGetTokenRequest(добавлен недостающий параметр)Release 1.0.0 (2017-10-18)Первый релиз