ivknv / yadisk

Библиотека-клиент REST API Яндекс.Диска для Python / Yandex.Disk REST API client library for Python
https://yadisk.readthedocs.io
GNU Lesser General Public License v3.0
130 stars 9 forks source link

[Question] Можно ли качать preview изображений/видео? #52

Open pryadchenko opened 2 weeks ago

pryadchenko commented 2 weeks ago

Краткое описание вашего вопроса Можно ли качать preview изображений/видео?

Подробное содержание вопроса.

В API v1/disk/resources, среди прочего, может возвращать пачку preview разного размера. Их можно как-то обрабатывать? В документации не нашел ничего

ivknv commented 2 weeks ago

Можно ли качать preview изображений/видео?

Можно. Ссылка на превью доступна через атрибут preview ресурса:

import yadisk

with yadisk.Client(token="...") as client:
    # Получаем ссылку на превью для my-file.jpg.
    # В ссылке присутствует GET-параметр size, он определяет размер превью.
    # Значение этого параметра можно заменить на другое (XXXS, XXS, XS, S, M, L, XL, XXL, XXXL).
    preview_url = client.get_meta("/my-file.jpg", fields=["preview"]).preview

    # В некоторых случаях превью может отсутствовать (например, для папок)
    if preview_url is None:
        raise ValueError("Отсутствует превью")

    # Теперь скачиваем превью по полученной ссылке в файл my-file-preview.jpg.
    # Можно также скачать файл с помощью любой другой HTTP библиотеки обычным GET запросом.
    client.download_by_link(
        preview_url,
        "my-file-preview.jpg",
        # Для скачивания превью нужно дополнительно указать токен в заголовках
        headers={"Authorization": f"OAuth {client.token}"}  
    )

В API v1/disk/resources, среди прочего, может возвращать пачку preview разного размера. Их можно как-то обрабатывать?

На полигоне добавили поле sizes со ссылками на все размеры превью, но в текущей версии библиотеки он недоступен, добавлю в следующей. Пока что единственный способ выбрать размер превью — это изменять параметр size в полученной ссылке.

pryadchenko commented 2 weeks ago

Да вот получаю 403 по этой ссылке get запросом (при этом сам файл по download линке качается). Только в браузере, где авторизован в Яндексе, могу открыть preview без ошибки.

вт, 27 авг. 2024 г., 19:24 Ivan Konovalov @.***>:

Можно ли качать preview изображений/видео?

Можно. Ссылка на превью доступна через атрибут preview ресурса:

import yadisk with yadisk.Client(token="...") as client:

Получаем ссылку на превью для my-file.jpg.

# В ссылке присутствует GET-параметр size, он определяет размер превью.
# Значение этого параметра можно заменить на другое (XXXS, XXS, XS, S, M, L, XL, XXL, XXXL).
preview_url = client.get_meta("/my-file.jpg", fields=["preview"]).preview

# В некоторых случаях превью может отсутствовать (например, для папок)
if preview_url is None:
    raise ValueError("Отсутствует превью")

# Теперь скачиваем превью по полученной ссылке в файл my-file-preview.jpg.
# Можно также скачать файл с помощью любой другой HTTP библиотеки обычным GET запросом.
client.download_by_link(
    preview_url,
    "my-file-preview.jpg",
    # Для скачивания превью нужно дополнительно указать токен в заголовках
    headers={"Authorization": f"OAuth {client.token}"}
)

В API v1/disk/resources, среди прочего, может возвращать пачку preview разного размера. Их можно как-то обрабатывать?

На полигоне https://yandex.ru/dev/disk/poligon добавили поле sizes со ссылками на все размеры превью, но в текущей версии библиотеки он недоступен, добавлю в следующей. Пока что единственный способ выбрать размер превью — это изменять параметр size в полученной ссылке.

— Reply to this email directly, view it on GitHub https://github.com/ivknv/yadisk/issues/52#issuecomment-2313129601, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABD3E67WDIOY5I54LWZOUVDZTSY3RAVCNFSM6AAAAABNGQJIOWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJTGEZDSNRQGE . You are receiving this because you authored the thread.Message ID: @.***>

ivknv commented 2 weeks ago

получаю 403

Нужно в заголовках запроса ещё указать токен (как в примере выше), тогда файл скачается.

pryadchenko commented 2 weeks ago

Признаюсь, попробовал через curl, и токен указывал. Через ваш пакет не пробовал - как раз на него набрел в поисках решения. Попробую

вт, 27 авг. 2024 г., 19:46 Ivan Konovalov @.***>:

получаю 403

Нужно в заголовках запроса ещё указать токен (как в примере выше), тогда файл скачается.

— Reply to this email directly, view it on GitHub https://github.com/ivknv/yadisk/issues/52#issuecomment-2313171291, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABD3E66F4YE3JT6XVGBKBJLZTS3QHAVCNFSM6AAAAABNGQJIOWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJTGE3TCMRZGE . You are receiving this because you authored the thread.Message ID: @.***>