Получение и вывод списка картинок с яндекс диска

Здравствуйте уважаемые коллеги!
Есть задача вывести на сайт все картинки из определенной папки с яндекс диска (доступ к диску есть)
Вариант, который встречается в сети — получить ссылку на каждую картинку вручную не подходит т.к. картинок там более 1000…

Есть ли способ получить список всех файлов и ссылок на них, зная название папки и имея доступы к диску?
Олег
17 декабря 2024, 01:40
modx.pro

Комментарии: 3

Наумов Алексей
17 декабря 2024, 09:41
+1
Вот документация есть yandex.ru/dev/disk/doc/ru/
    Олег
    19 декабря 2024, 22:29
    0
    У меня получилось вывести список изображений из определенной папки Яндекс Диска (код частично взят из разных источников и названия переменных совпадают). Название папки передаю через GET
    Не могу получить превьюшки нужного размера. В запросе их указал, но как их вывести?
    Пока получилось вывести какой-то стандартный формат превью.

    Подскажите, как вывести нужный размер превью?

    И еще вопрос — в идеале прогонять все картинки через phpthumbon, чтобы они кешировались на сайте, но phpthumbon эти ссылки не может обработать. Есть какой-то вариант кешировать превьюшки в папке сайта?

    <?php
    $token = 'y0_AgAAAAA...................shC_if0A';
    $fields = '_embedded.items.name,_embedded.items.type';
    $path=isset($_GET['path']);
    $limit=isset($_GET['limit']) ? $_GET['limit'] : 20;
    $offset=isset($_GET['offset']) ? $_GET['offset'] : 0;
    $amount=isset($_GET['amount']) ? $_GET['amount'] : 20;
    
    $ch = curl_init('https://cloud-api.yandex.net/v1/disk/resources?path=' .urlencode($path) .'&limit=' . $limit .'&offset='. $offset.'&amount='. $amount);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $token));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HEADER, false);
    $res = curl_exec($ch);
    curl_close($ch);
    
    $res = json_decode($res, true);
    $num_files=count($res[_embedded][items]);
    for ($i = 0; $i < $num_files; $i++)
    {
    $filesname = $res[_embedded][items][$i][name];
    $preview = $res[_embedded][items][$i][preview];
    
    $yd_file = '/'.$path.'/'.$filesname;
    $ch = curl_init('https://cloud-api.yandex.net/v1/disk/resources/download?preview&size=M&preview_crop=true&preview_size=M&path=' .urlencode($yd_file));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $token));
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    $exy = curl_exec($ch);
    $exy = json_decode($exy, true);
    $exy = $exy[href];
    
    echo '<a href="'.$exy.'"><img src="'.$preview.'" alt=""  /></a>';
    curl_close($ch);
    }
      Олег
      20 декабря 2024, 00:21
      0
      Превьюшки нашел.
      Они в этом массиве [_embedded][items][номер файла][sizes]

      Остался вопрос с кешированием
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3