В новом уроке мы с вами пропишем методы для получения информации о файлах и директориях находящихся на Яндекс.Диске.
Полный список всех записей курса находится на сайте https://prog-time.ru/course_cat/yandeks-disk-api-php/ или в публикациях на Хабр https://habr.com/ru/users/Prog-Time/posts/
Получение директорий с Яндекс.Диска через API
Для получения информации из области РЕСУРСОВ нужно отправить запрос на URL
https://cloud-api.yandex.net/v1/disk/resources
Для получения информации из области КОРЗИНЫ нужно отправить запрос на URL
https://cloud-api.yandex.net/v1/disk/trash/resources
В качестве параметров вы можете передать следующие данные.
|
|
Путь к нужному ресурсу относительно корневого каталога Диска. Путь к ресурсу в Корзине следует указывать относительно корневого каталога Корзины. Путь в значении параметра следует кодировать в URL-формате. |
|
|
Список свойств JSON, которые следует включить в ответ. Ключи, не указанные в этом списке, будут отброшены при составлении ответа. Если параметр не указан, ответ возвращается полностью, без сокращений. Имена ключей следует указывать через запятую, а вложенные ключи разделять точками. Например: |
|
|
Количество ресурсов, вложенных в папку, описание которых следует вернуть в ответе (например, для постраничного вывода). Значение по умолчанию — 20. |
|
|
Количество вложенных в папку ресурсов, которые следует опустить в ответе (например, для постраничного вывода). Список сортируется согласно значению параметра |
|
|
Параметр позволяет обрезать превью согласно размеру, заданному в значении параметра Допустимые значения:
— Если передана только ширина или высота, картинка уменьшается до этого размера с сохранением пропорций. Затем из центра уменьшенного изображения также вырезается квадрат с заданной стороной. — Если передан точный размер (например, |
|
|
Требуемый размер уменьшенного изображения (превью файла), ссылку на которое Диск должен вернуть в ключе Варианты значений:
Точная ширина (например, Точный размер (в формате |
|
|
Атрибут, по которому нужно сортировать список ресурсов, вложенных в папку. В качестве значения можно указывать имена следующих свойств объекта Resource:
Для сортировки в обратном порядке добавьте дефис к значению параметра, например: |
Метод для получения директорий принимает 2 аргумента: массив с параметрами для запроса и тип директории (активные ресурсы или корзина).
/** * Получение директорий * * @param array $arrParams параметры для получения ресурсов * @param string $typeDir тип области ресурсов * * @return array */ public function disk_resources(array $arrParams, string $typeDir = ''): array { switch ($typeDir) { case 'trash': /* запрос для директорий в корзине */ $urlQuery = 'https://cloud-api.yandex.net/v1/disk/trash/resources'; break; case 'standart': /* запрос для активных директорий */ $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources'; break; } return $this->sendQueryYaDisk($urlQuery, $arrParams); }
Пример отправки запроса
... $yaClass = new Backup(); arrQuery);
Пример ответа
{ "public_key": "HQsmHLoeyBlJf8Eu1jlmzuU+ZaLkjPkgcvmokRUCIo8=", "_embedded": { "sort": "", "path": "disk:/foo", "items": [ { "path": "disk:/foo/bar", "type": "dir", "name": "bar", "modified": "2014-04-22T10:32:49+04:00", "created": "2014-04-22T10:32:49+04:00" }, { "name": "photo.png", "preview": "https://downloader.disk.yandex.ru/preview/...", "created": "2014-04-21T14:57:13+04:00", "modified": "2014-04-21T14:57:14+04:00", "path": "disk:/foo/photo.png", "md5": "4334dc6379c8f95ddf11b9508cfea271", "type": "file", "mime_type": "image/png", "size": 34567 } ], "limit": 20, "offset": 0 }, "name": "foo", "created": "2014-04-21T14:54:42+04:00", "custom_properties": {"foo":"1", "bar":"2"}, "public_url": "https://yadi.sk/d/2AEJCiNTZGiYX", "modified": "2014-04-22T10:32:49+04:00", "path": "disk:/foo", "type": "dir" }
Данные получаемые в ответе:
|
|
Поле, по которому отсортирован список. |
|
|
Ключ опубликованной папки, в которой содержатся ресурсы из данного списка. Включается только в ответ на запрос метаинформации о публичной папке. |
|
|
Массив ресурсов (Resource), содержащихся в папке. Вне зависимости от запрошенной сортировки, ресурсы в массиве упорядочены по их виду: сначала перечисляются все вложенные папки, затем — вложенные файлы. |
|
|
Максимальное количество элементов в массиве |
|
|
Смещение начала списка от первого ресурса в папке. |
|
|
Путь к папке, чье содержимое описывается в данном объекте |
|
|
Общее количество ресурсов в папке. |
Получение сплошного списка файлов и директорий с Яндекс.Диска
Для получение всех файлов и директорий, без учёта структуры директорий, используют метод resources/files.
Данный API метод принимает следующие параметры:
|
|
Количество файлов, описание которых следует вернуть в ответе (например, для постраничного вывода). Значение по умолчанию — 20. |
|
|
Тип файлов, которые нужно включить в список. Диск определяет тип каждого файла при загрузке. Чтобы запросить несколько типов файлов, можно перечислить их в значении параметра через запятую. Например, Поддерживаемые типы:
|
|
|
Количество ресурсов с начала списка, которые следует опустить в ответе (например, для постраничного вывода).Допустим, папка /foo содержит три файла. Если запросить метаинформацию о папке с параметром |
|
|
Список свойств JSON, которые следует включить в ответ. Ключи, не указанные в этом списке, будут отброшены при составлении ответа. Если параметр не указан, ответ возвращается полностью, без сокращений. Имена ключей следует указывать через запятую, а вложенные ключи разделять точками. Например: |
|
|
Требуемый размер уменьшенного изображения (превью файла), ссылку на которое Диск должен вернуть в ключе Варианты значений: Предопределенный размер большей стороны. Поддерживаемые значения: Точная ширина (например, Точный размер (в формате |
|
|
Параметр позволяет обрезать превью согласно размеру, заданному в значении параметра Допустимые значения: |
Отправляем запрос на получение списка файлов и директорий.
/** * Получение плоского списка всех файлов * * @param array $arrParams параметры для получения ресурсов * * @return array */ public function disk_resources_files(array $arrParams = []): array { $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources/files'; return $this->sendQueryYaDisk($urlQuery, $arrParams); }
Пример ответа:
{ "items": [ { "name": "photo2.png", "preview": "https://downloader.disk.yandex.ru/preview/...", "created": "2014-04-22T14:57:13+04:00", "modified": "2014-04-22T14:57:14+04:00", "path": "disk:/foo/photo2.png", "md5": "53f4dc6379c8f95ddf11b9508cfea271", "type": "file", "mime_type": "image/png", "size": 54321 }, { "name": "photo1.png", "preview": "https://downloader.disk.yandex.ru/preview/...", "created": "2014-04-21T14:57:13+04:00", "modified": "2014-04-21T14:57:14+04:00", "path": "disk:/foo/photo1.png", "md5": "4334dc6379c8f95ddf11b9508cfea271", "type": "file", "mime_type": "image/png", "size": 34567 } ], "limit": 20, "offset": 0 }
Описание элементов ответа:
|
|
Ключ опубликованного ресурса. Включается в ответ только если указанный файл или папка опубликован. |
|
|
Ссылка на опубликованный ресурс. Включается в ответ только если указанный файл или папка опубликован. |
|
|
Ресурсы, непосредственно содержащиеся в папке (содержит объект ResourceList). Включается в ответ только при запросе метаинформации о папке. |
|
|
Ссылка на уменьшенное изображение из файла (превью). Включается в ответ только для файлов поддерживаемых графических форматов. Запросить превью можно только с OAuth-токеном пользователя, имеющего доступ к самому файлу. |
|
|
Имя ресурса. |
|
|
Объект со всеми атрибутами, заданными с помощью запроса Добавление метаинформации для ресурса. Содержит только ключи вида |
|
|
Дата и время создания ресурса, в формате ISO 8601. |
|
|
Дата и время изменения ресурса, в формате ISO 8601. |
|
|
Полный путь к ресурсу на Диске. В метаинформации опубликованной папки пути указываются относительно самой папки. Для опубликованных файлов значение ключа всегда «/».Для ресурса, находящегося в Корзине, к атрибуту может быть добавлен уникальный идентификатор (например, |
|
|
Путь к ресурсу до перемещения в Корзину. Включается в ответ только для запроса метаинформации о ресурсе в Корзине. |
|
|
MD5-хэш файла. |
|
|
Тип ресурса:«dir» — папка;«file» — файл. |
|
|
MIME-тип файла. |
|
|
Размер файла. |
Получение последних добавленных файлов и директорий
Для получения последних добавленных ресурсов используется метод resources/last-uploaded. Данный метод использует те же параметры, что и resources/files.
/** * Получение последних загруженных элементов * * @param array $arrParams параметры для получения ресурсов * * @return array */ public function disk_resources_last_uploaded(array $arrParams = []): array { $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources/last-uploaded'; return $this->sendQueryYaDisk($urlQuery, $arrParams); }
Таким образом мы с вами научились запрашивать информацию о имеющихся файлах и директориях на Яндекс.Диске.
В следующем уроке я вам покажу как загружать и скачивать файлы с Яндекс.Диска.
ссылка на оригинал статьи https://habr.com/ru/articles/749162/
Добавить комментарий