Как использовать необязательные параметры в Google Photos API? - PullRequest
0 голосов
/ 27 апреля 2019

Я работаю над проектом в php с Google Photos API.У меня есть проблема, если я передаю необязательные параметры, такие как pageSize, он не работает по-прежнему получить все изображения.

$optParams = array(
  'pageSize' => 1,
);

$response = $photosLibraryClient->listMediaItems($optParams);
foreach ($response->iterateAllElements() as $item) {
    $id = $item->getId();
    $description = $item->getDescription();
    $mimeType = $item->getMimeType();
    $productUrl = $item->getProductUrl();
    $filename = $item->getFilename();

    echo '<br>';
    echo $filename;
}

1 Ответ

0 голосов
/ 30 апреля 2019

Я не уверен на 100% в этом , но, похоже, iterateAllElements буквально перебирает все элементы, доступные в учетной записи, игнорируя указанный вами размер страницы (даже размер страницы по умолчанию), запрашивая все из API без каких-либо границ.

Вы можете перебрать возвращенные страницы, заменив iterateAllElements на iteratePages, но, похоже, он не работает должным образом без идентификатора альбома, API возвращает неправильный размер страницы, как в примере ниже:

$optParams = array(
  'pageSize' => 5 // Changed
);

$response = $photosLibraryClient->searchMediaItems($optParams); // Changed the method

foreach ($response->iteratePages() as $key => $page) {
    echo "Page #{$key}<br>";
    foreach ($page as $item) {
        $id = $item->getId();
        $description = $item->getDescription();
        $mimeType = $item->getMimeType();
        $productUrl = $item->getProductUrl();
        $filename = $item->getFilename();

        echo '<br>';
        echo $filename;
    }
}

если поиск или список были вызваны без предоставления albumId, приведенный выше пример вернет что-то вроде этого:

[
    [{...},{...},{...}],
    [{...},{...},{...},{...},{...}],
    [{...}],
    [],
    [{...},{...},{...},{...},{...}],
    []
]

Если вы найдете хорошее решение для этой конкретной проблемы, пожалуйста, дайте мне знать.

Ps .: Их поведение API и документация очень странные и запутанные.

...