Как получить результат метода save_to_disk если результат SyncOperationLinkObject / How to get the result of the save_to_disk method if the result is SyncOperationLinkObject
thug21 opened this issue · 2 comments
Здравствуйте!
Подскажите, каким образом можно получить путь к новому ресурсу при вызове метода save_to_disk для копировании общей папки? При вызове данного метода в синхронном режиме возвращается тип SyncOperationLinkObject с использованием того типа мы можем получить момент завершения операции, но как при этом получить путь к новому объекту как это происходит при сохранении на свой диск файла?
Could you please tell me how to get the path to a new resource when calling the save_to_disk method to copy a shared folder? When calling this method in synchronous mode the SyncOperationLinkObject type is returned. Using that type we can get the moment the operation is completed, but how can we get the path to the new object like this happens when saving a file to your disk?
Имя файла можно получить с помощью метода get_public_meta(), т.к. в данном случае у вас есть public_key/public_url
ресурса.
А папка, в которую будет сохранен файл зависит от параметров, переданных save_to_disk()
- либо стандартная папка загрузок, либо вручную указанная вами в запросе.
Можно сделать как-то так:
import yadisk
import posixpath
from typing import Optional
def get_saved_file_path(client: yadisk.Client, public_key_or_url: str, downloads_folder: Optional[str] = None) -> str:
if downloads_folder is None:
# значение можно закэшировать для пользователя
# название папки для загрузок зависит от языка аккаунта
downloads_folder = client.get_disk_info().system_folders.downloads
return posixpath.join(downloads_folder, client.get_public_meta(public_key_or_url, fields=["name"]).name)
Спасибо, примерно так и сделал