ivknv/yadisk

Как получить результат метода 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

thug21 commented

Здравствуйте!

Подскажите, каким образом можно получить путь к новому ресурсу при вызове метода 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?

ivknv commented

Имя файла можно получить с помощью метода 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)
thug21 commented

Спасибо, примерно так и сделал