Wyświetlanie listy zawartości biblioteki, albumów i elementów multimedialnych

Wymagane zakresy autoryzacji

Interfejs Google Photos Library API zawiera wiele zakresów używanych do uzyskiwania dostępu do elementów multimedialnych i albumów. Elementy multimedialne zwracane z różnych wywołań różnią się w zależności od zakresów zostały zażądane przez dewelopera.

Zakres photoslibrary.readonly umożliwia dostęp do wszystkich elementów multimedialnych w w bibliotece użytkownika. Zakres photoslibrary.readonly.appcreateddata zezwala na dostęp tylko w przypadku elementów multimedialnych utworzonych przez aplikację. Więcej informacji: Zakresy autoryzacji.

Omówienie

Istotnym zastosowaniem interfejsu API jest wyświetlanie listy elementów multimedialnych, których kopie zapasowe zostały utworzone przez użytkownika. do Zdjęć Google. elementy z określonego albumu lub z całego albumu użytkownika; (domyślny widok w aplikacji Zdjęcia Google).

Możesz wybrać zdjęcia za pomocą filtrów pasujące do określonej daty, kategorii treści lub typu multimediów podczas wyświetlania elementów. z biblioteki użytkownika. Ta funkcja nie jest obsługiwana w przypadku wyświetlania elementów z .

Wyświetlanie listy zawartości biblioteki i albumu zwraca listę elementów multimedialnych. ulepszenia, które są częścią albumu; nie są uwzględnione. Elementy multimedialne opisują zdjęcie, film lub inne multimedia. O mediaItem zawiera bezpośredni link do produktu, link do niego w Zdjęć Google i innych istotnych metadanych. Więcej informacji: uzyskać dostęp do elementów multimedialnych oraz mediaItems.

Informacje o albumach

Aby pobrać listę albumów użytkownika, użyj funkcji albums.list.

REST

Oto przykładowe żądanie:

GET https://photoslibrary.googleapis.com/v1/albums

Żądanie zwraca następujący wynik:

{
  "albums": [
    {
      "id": "album-id",
      "title": "album-title",
      "productUrl": "album-product-url",
      "coverPhotoBaseUrl": "album-cover-base-url_do-not-use-directly",
      "coverPhotoMediaItemId": "album-cover-media-item-id",
      "isWriteable": "whether-you-can-write-to-this-album",
      "mediaItemsCount": "number-of-media-items-in-album"
    },
    ...
  ],
  "nextPageToken": "token-for-pagination"
}

Java

try {
  // Make a request to list all albums in the user's library
  // Iterate over all the albums in this list
  // Pagination is handled automatically
  ListAlbumsPagedResponse response = photosLibraryClient.listAlbums();

  for (Album album : response.iterateAll()) {
    // Get some properties of an album
    String id = album.getId();
    String title = album.getTitle();
    String productUrl = album.getProductUrl();
    String coverPhotoBaseUrl = album.getCoverPhotoBaseUrl();
    // The cover photo media item id field may be empty
    String coverPhotoMediaItemId = album.getCoverPhotoMediaItemId();
    boolean isWritable = album.getIsWriteable();
    long mediaItemsCount = album.getMediaItemsCount();
  }

} catch (ApiException e) {
  // Handle error
}

PHP

try {
    // Make a request to list all albums in the user's library
    // Iterate over all the albums in this list
    // Pagination is handled automatically
    $response = $photosLibraryClient->listAlbums();
    foreach ($response->iterateAllElements() as $album) {
        // Get some properties of an album
        $albumId = $album->getId();
        $title = $album->getTitle();
        $productUrl = $album->getProductUrl();
        $coverPhotoBaseUrl = $album->getCoverPhotoBaseUrl();
        // The cover photo media item id field may be empty
        $coverPhotoMediaItemId = $album->getCoverPhotoMediaItemId();
        $isWriteable = $album->getIsWriteable();
        $totalMediaItems = $album->getTotalMediaItems();
    }
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Każdy zwrócony album ma identyfikator, którego można użyć do pobrania zawartości albumu, tak jak w sekcji Informacje o zawartości albumu. Dodatkowo zawiera tytuł i liczbę zawartych w nim elementów multimedialnych.

productUrl wskazuje album w Zdjęciach Google, który może być otwieranych przez użytkownika.

coverPhotoMediaItemId zawiera element multimedialny Identyfikator oznacza zdjęcie na okładkę tego albumu. Aby uzyskać dostęp do tego zdjęcia okładki, użyj polecenia coverPhotoBaseUrl Nie należy korzystać z coverPhotoBaseUrl bezpośrednio bez określenie dodatkowych .

albumów, które zostały utworzone na koncie użytkownika lub dodane do konta udostępnionego przez Twoją aplikację, zawiera dodatkową usługę shareInfo. Więcej informacji znajdziesz w artykule Udostępnianie multimediów.

Albumy mogą również mieć flagę isWriteable wskazującą, czy możesz tworzyć multimedia. elementy w albumie. Jeśli ta flaga nie zostanie zwrócona, przyjmuje domyślnie wartość false. Jest w zależności od uprawnień dostępu udzielonych aplikacji, w tym:

  • kto jest autorem albumu;
  • czy jest udostępniony czy nie.
  • Zakres użytkownika zatwierdzony.

Ta flaga może ulec zmianie, jeśli zmieni się któreś z tych kryteriów. Więcej informacji: Tworzenie albumów odpowiedź zawiera też nextPageToken. Więcej informacji: Podział na strony.

Odpowiedź w przypadku pustych albumów różni się tym, że mediaItemsCount i Zmienne coverPhotoMediaItemId mają domyślnie wartość 0 i są pomijane w REST . Pamiętaj też, że coverPhotoBaseUrl wskazuje domyślny obiekt zastępczy .

Zawartość biblioteki informacji o produktach

Możesz wyświetlić wszystkie elementy multimedialne z biblioteki Zdjęć Google użytkownika. Nie obejmuje elementów zarchiwizowanych i usuniętych. Możesz wyświetlać elementy multimedialne na podstawie treści, daty i innych właściwości, stosując filtrów. Jeśli użytkownik nie dodał element dostępny na karcie Udostępnianie w Zdjęciach Google jego właściciela , nie ma go na tej liście.

Aby pobrać element multimedialny, wywołaj mediaItems.list.

REST

Oto przykładowe żądanie:

GET https://photoslibrary.googleapis.com/v1/mediaItems
Content-type: application/json
Authorization: Bearer oauth2-token
{
  "pageSize": "100",
}

Żądanie GET zwraca następującą odpowiedź:

{
  "mediaItems": [
    ...
  ],
  "nextPageToken": "token-for-pagination"
}

Java

try {
  // Make a request to list all media items in the user's library
  // Iterate over all the retrieved media items
  // Pagination is handled automatically
  ListMediaItemsPagedResponse response = photosLibraryClient.listMediaItems();
  for (MediaItem item : response.iterateAll()) {
    // Get some properties of a media item
    String id = item.getId();
    String description = item.getDescription();
    String mimeType = item.getMimeType();
    String productUrl = item.getProductUrl();
    String filename = item.getFilename();
  }
} catch (ApiException e) {
  // Handle error
}

PHP

try {
    // Make a request to list all media items in the user's library
    // Iterate over all the retrieved media items
    // Pagination is handled automatically
    $response = $photosLibraryClient->listMediaItems();
    foreach ($response->iterateAllElements() as $item) {
        // Get some properties of a media item
        /* @var $item \Google\Photos\Library\V1\MediaItem */
        $id = $item->getId();
        $description = $item->getDescription();
        $mimeType = $item->getMimeType();
        $productUrl = $item->getProductUrl();
        $filename = $item->getFilename();
    }
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Odpowiedź zawiera listę elementów multimedialnych uporządkowanych od najnowszych do najstarszych. Więcej informacji: mediaItems Dodatkowo zawiera pole nextPageToken, które zostało szczegółowo opisane w Podział na strony.

Wyświetl listę zawartości albumu

Aby wyświetlić listę wszystkich elementów multimedialnych w albumie, dodaj pole albumId do do wyszukiwania. albumId, aby dowiedzieć się więcej, zapoznaj się z informacjami o firmie albumy i Wyświetlanie listy albumów udostępnionych. Jeśli albumId jest nieprawidłowy, zwracany jest błąd Bad Request. Jeśli identyfikator jest prawidłowy, ale album nie istnieje dla uwierzytelnionego użytkownika, wystąpił błąd Not Found . Więcej informacji na temat obsługi błędów można znaleźć w sekcji Skuteczność wskazówek i Najlepsze i metod ochrony danych.

REST

Oto przykładowe żądanie:

POST https://photoslibrary.googleapis.com/v1/mediaItems:search
Content-type: application/json
Authorization: Bearer oauth2-token
{
  "pageSize": "100",
  "albumId": "album-id"
}

Żądanie POST zwraca następującą odpowiedź:

{
  "mediaItems": [
    ...
  ],
  "nextPageToken": "token-for-pagination"
}

Java

try {
  // Make a request to list all media items in an album
  // Provide the ID of the album as a parameter in the searchMediaItems call
  // Iterate over all the retrieved media items
  SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(albumId);

  for (MediaItem item : response.iterateAll()) {
    // ...
  }

} catch (ApiException e) {
  // Handle error
}

PHP

try {
    // Make a request to list all media items in an album
    // Provide the ID of the album as a parameter in the searchMediaItems call
    // Iterate over all the retrieved media items
    $response = $photosLibraryClient->searchMediaItems(['albumId' => $albumId]);
    foreach ($response->iterateAllElements() as $item) {
        // ...
    }
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Odpowiedź zawiera element nextPageToken i listę elementów multimedialnych. Niepodobne do tego, kiedy elementy multimedialne są zwracane według kolejności . Więcej informacji: mediaItems i Podział na strony. Użytkownik może edytować zamówienie w Interfejs Zdjęć Google.

Jeśli zasada albumId jest skonfigurowana, nie można zastosować filtra podczas wyświetlania listy zawartości albumu. Jeśli to zrobisz, wyświetli się błąd Bad Request.

Wyświetlanie listy albumów udostępnionych

Możesz pobrać listę wszystkich albumów, które użytkownik udostępnił lub które zostały udostępnione użytkownikowi. Działa to podobnie jak na karcie Udostępnianie w Zdjęcia Google.

albumy udostępnione, które użytkownik dodał do swojej biblioteki Zdjęć Google; są także zwracane w wywołaniu albumów z informacjami. Niech następujące wywołanie listy albumów udostępnionych za pomocą interfejsu Library API:

REST

Oto przykładowe żądanie:

GET https://photoslibrary.googleapis.com/v1/sharedAlbums

Żądanie zwraca następujący wynik:

{
  "sharedAlbums": [...]
  "nextPageToken": "token-for-pagination"
}

Java

try {
  // Make a request to list all albums that have been shared by the user
  // Iterate over all the albums in this list
  // Pagination is handled automatically
  ListSharedAlbumsPagedResponse response = photosLibraryClient.listSharedAlbums();

  for (Album album : response.iterateAll()) {
    // ..
  }

} catch (ApiException e) {
  // Handle error
}

PHP

try {
    // Make a request to list all albums that have been shared by the user
    // Iterate over all the albums in this list
    // Pagination is handled automatically
    $response = $photosLibraryClient->listSharedAlbums();
    foreach ($response->iterateAllElements() as $album) {
        // ...
    }
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Lista albumów znajduje się w sharedAlbums. Więcej informacji: Albumy na liście. Odpowiedź zawiera też atrybut nextPageToken. Więcej informacji znajdziesz w sekcji Podział na strony.

Albumy utworzone i udostępnione przez aplikację obejmują dodatkowy shareInfo usłudze. Więcej informacji znajdziesz w sekcji Udostępnianie multimediów.

Wyświetlanie listy albumów utworzonych przez aplikację

Albumy utworzone przez Twoją aplikację możesz wyświetlić w następujący sposób: Ustawienie excludeNonAppCreatedData ma wartość true w tych wywołaniach:

REST

Oto żądanie GET pozwalające wyświetlić listę wszystkich albumów użytkownika Biblioteka Zdjęć Google utworzona tylko przez Twoją aplikację:

GET https://photoslibrary.googleapis.com/v1/albums?excludeNonAppCreatedData=true
Content-type: application/json
Authorization: Bearer oauth2-token

Oto żądanie GET pozwalające wyświetlić listę wszystkich albumów udostępnionych z Biblioteka Zdjęć Google utworzona tylko przez Twoją aplikację:

GET https://photoslibrary.googleapis.com/v1/sharedAlbums?excludeNonAppCreatedData=true
Content-type: application/json
Authorization: Bearer oauth2-token

Java

try {
  // Make a request to list all albums that have been created by your app
  boolean excludeNonAppCreatedData = true;

  // Iterate over all the albums in this list
  // Pagination is handled automatically
  ListAlbumsPagedResponse response = photosLibraryClient.listAlbums(excludeNonAppCreatedData);

  for (Album album : response.iterateAll()) {
    // ..
  }

} catch (ApiException e) {
  // Handle error
}

try {
  // Make a request to list all shared albums that have been created by your app
  boolean excludeNonAppCreatedData = true;

  // Iterate over all the albums in this list
  // Pagination is handled automatically
  ListSharedAlbumsPagedResponse response =
      photosLibraryClient.listSharedAlbums(excludeNonAppCreatedData);

  for (Album album : response.iterateAll()) {
    // ..
  }

} catch (ApiException e) {
  // Handle error
}

PHP

try {
    // Make a request to list all albums that have been created by your app
    $response = $photosLibraryClient->listAlbums(['excludeNonAppCreatedData' => true]);

    // Iterate over all the albums in this list
    // Pagination is handled automatically
    foreach ($response->iterateAllElements() as $album) {
        // ...
    }
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

try {
    // Make a request to list all shared albums that have been created by your app
    $response = $photosLibraryClient->listSharedAlbums(['excludeNonAppCreatedData' => true]);

    // Iterate over all the albums in this list
    // Pagination is handled automatically
    foreach ($response->iterateAllElements() as $album) {
        // ...
    }
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Podział na strony w przypadku REST

Aby poprawić wydajność, użyj metod, które zwracają dużą liczbę wyników (np. za pomocą listy metod), mogą one podzielić odpowiedź na strony. Maksymalna liczba wyników w każdym jest podawana przez parametr pageSize.

W przypadku wywołań funkcji mediaItems:search i mediaItems:list domyślny rozmiar strony to 25 elementów. Zalecamy taki rozmiar strony, ponieważ zachowuje on równowagę rozmiar odpowiedzi i współczynnik wypełnienia. Maksymalny rozmiar strony elementu multimedialnego żądania wyszukiwania i wyświetlenia listy to 100 elementów.

Domyślny i zalecany rozmiar strony przy wyświetlaniu listy albumów to 20 albumów, przy czym maksymalnie 50 albumów.

Jeśli liczba dostępnych wyników przekracza rozmiar strony, odpowiedź zawiera element nextPageToken, który wskazuje aplikacji, że więcej wyników do pobrania z serwera.

Przykład

Do kolejnych żądań w parametrze musisz dołączać nextPageToken. pageToken zgodnie z poniższym przykładem. Podaj pageToken razem z innymi parametrami wymaganymi do tej operacji, zarówno w treści zapytania, jako parametru zapytania.

Prośba nr 1

{
  "pageSize": "5",
  "filters": { … }
}

Odpowiedź 1

{
  "mediaItem": [ … ],
  "nextPageToken": "next-page-token"
}

Prośba nr 2

{
  "pageSize": "5",
  "filters": { … },
  "pageToken": "page-token"
}

Odpowiedź 2

{
  "mediaItem": [ … ],
  "nextPageToken": "next-page-token"
}

Kontynuuj ten wzorzec, aż skończą się obiekty nextPageToken.

Pole nextPageToken jest prawidłowe tylko w przypadku tego samego żądania. Jeśli jakiekolwiek parametry są wcześniej użytego pola nextPageToken nie należy używać w taki sam sposób użytkownika.