Gerenciar álbuns

No Google Fotos, é possível organizar fotos e outros itens de mídia usando álbuns. Um item de mídia pode ser associado a um ou mais álbuns. Para começar a associar itens de mídia a um álbum, crie o álbum primeiro.

Escopos de autorização obrigatórios

Para criar um álbum, seu aplicativo precisa solicitar pelo menos um dos seguintes escopos de autorização:

  • photoslibrary.appendonly
  • photoslibrary.sharing

Para mudar o título ou a foto da capa de álbuns após a criação, use o escopo photoslibrary.edit.appcreateddata.

Como criar um novo álbum

Para criar um álbum, chame albums.create e inclua o title. Observe que title está restrito a 500 caracteres.

A chamada retorna um álbum. O app pode armazenar o ID dessas informações e usá-las para fazer upload de itens de mídia para o álbum específico.

REST

Veja um cabeçalho para uma solicitação POST:

POST https://photoslibrary.googleapis.com/v1/albums
Content-type: application/json
Authorization: Bearer oauth2-token

O corpo da solicitação tem a seguinte aparência:

{
  "album": {
    "title": "new-album-title"
  }
}

Se for bem-sucedida, a resposta retornará um álbum:

{
  "productUrl": "album-product-url",
  "id": "album-id",
  "title": "album-title",
  "isWriteable": "whether-you-can-write-to-this-album"
}

Java

try {
  Album createdAlbum = photosLibraryClient.createAlbum("My Album");
  // The createdAlbum object contains properties of an album
  String productUrl = createdAlbum.getProductUrl();
  // coverPhotoBaseUrl shouldn't be used as is. Append parameters to base URLs before use
  String albumCoverImage = createdAlbum.getCoverPhotoBaseUrl() + "=w2048-h1024";
  boolean isWriteable = createdAlbum.getIsWriteable();
} catch (ApiException e) {
  // Handle error
}

PHP

try {
    $newAlbum = PhotosLibraryResourceFactory::album("My Album");
    $createdAlbum = $photosLibraryClient->createAlbum($newAlbum);
    // The createdAlbum object contains properties of an album
    $albumId = $createdAlbum->getId();
    $productUrl = $createdAlbum->getProductUrl();
    // coverPhotoBaseUrl shouldn't be used as is. Append parameters to base URLs before use
    $albumCoverImage = $createdAlbum->getCoverPhotoBaseUrl() . '=w2048-h1024';
    $isWriteable = $createdAlbum->getIsWriteable();
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Como alterar títulos de álbuns e fotos de capa

Para mudar o título ou a foto da capa de um álbum, crie um album update call com o identificador e inclua o novo título ou o código do item de mídia da nova foto da capa na solicitação. Será necessário usar o escopo de autorização da photoslibrary.edit.appcreateddata para fazer a mudança.

Os títulos dos álbuns não podem ter mais de 500 caracteres. Os itens de mídia da capa precisam pertencer ao proprietário do álbum e ao álbum do qual serão a capa.

REST

Veja um cabeçalho de solicitação PATCH para atualizar as title e o coverPhotomediaItemId de um álbum.

PATCH https://photoslibrary.googleapis.com/v1/albums/album-id?updateMask=title&updateMask=coverPhotoMediaItemId

Essa solicitação determina quais propriedades estão sendo atualizadas ao incluir uma máscara de campo, indicada pelos parâmetros updateMask no URL. O parâmetro updateMask precisa ser transmitido para cada propriedade de álbum que é atualizada.

Para cada propriedade que você estiver atualizando, inclua os detalhes no corpo da solicitação:

{
  "title": "new-album-title",
  "coverPhotoMediaItemId": "new-cover-media-item-id"
}

Se for bem-sucedida, a resposta retornará os detalhes atualizados do album:

{
  "id": "album-id",
  "title": "new-album-title",
  "productUrl": "album-product-url",
  "isWriteable": "true-if-user-can-write-to-this-album",
  "mediaItemsCount": "number-of-media-items-in-album",
  "coverPhotoBaseUrl": "cover-photo-base-url_use-only-with-parameters",
  "coverPhotoMediaItemId": "new-cover-media-item-id"
}

Java

try {
  // Update the cover photo of the album given a MediaItem object.
  Album updatedAlbum = photosLibraryClient.updateAlbumCoverPhoto(album, newCoverMediaItem);

  // Alternatively, you can update the cover photo of the album given a media item ID.
  // The specified media item identifier must be not null or empty.
  // Album updatedAlbum = photosLibraryClient.updateAlbumCoverPhoto(album, "new-cover-media-item-id");
} catch (ApiException e) {
  // Handle error
}
try {
  // Update the title of the album.
  // The new title must not be null or empty.
  Album updatedAlbum = photosLibraryClient.updateAlbumTitle(album, "new-album-title");
} catch (ApiException e) {
  // Handle error
}

PHP

try {

    // ID of the album to update.
    $albumId = "ALBUM_ID";

    // Media item ID of the new cover photo.
    // Must not be null or empty.
    $newCoverMediaItemId = "new-cover-media-item-id";

    // Update the cover photo of the album.
    $mediaItem = $photosLibraryClient->updateAlbumCoverPhoto($albumId, $newCoverMediaItemId);

} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}
try {

    // ID of the album to update.
    $albumId = "ALBUM_ID";

    // New title of the album.
    // Must not be null or empty.
    $newTitle = "new-album-title";

    // Update the title of the album.
    $mediaItem = $photosLibraryClient->updateAlbumTitle($albumId, $newTitle);

} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Como adicionar itens de mídia a um álbum

Para adicionar itens de mídia da biblioteca do Google Fotos do usuário a um álbum, chame albums.batchAddMediaItems. Os itens de mídia são adicionados ao final do álbum na ordem fornecida nesta chamada.

Toda a solicitação falhará se um item de mídia ou álbum inválido for especificado. Não é possível fazer sucesso parcial.

Cada álbum pode conter até 20 mil itens de mídia. As solicitações para adicionar mais itens que excederem esse limite vão falhar.

Só é possível adicionar itens de mídia que foram enviados pelo seu app a álbuns criados pelo seu app. Os itens de mídia também precisam estar na biblioteca do usuário. Nos álbuns compartilhados, eles precisam ser pertencentes ao usuário ou ser um colaborador que já ingressou no álbum.

Para adicionar itens de mídia a um álbum, chame albums.batchAddMediaItems com os identificadores dos itens de mídia e do álbum.

REST

Veja um cabeçalho para uma solicitação POST:

POST https://photoslibrary.googleapis.com/v1/albums/album-id:batchAddMediaItems
Content-type: application/json
Authorization: Bearer oauth2-token

O corpo da solicitação tem a seguinte aparência:

{
   "mediaItemIds": [
     "media-item-id",
     "another-media-item-id",
     ...
   ]
}

Se for bem-sucedida, a resposta retornará uma resposta JSON vazia e o status HTTP de sucesso.

Java

try {
  // List of media item IDs to add
  List<String> mediaItemIds = Arrays
      .asList("MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID");

  // ID of the album to add media items to
  String albumId = "ALBUM_ID";

  // Add all given media items to the album
  photosLibraryClient.batchAddMediaItemsToAlbum(albumId, mediaItemIds);

} catch (ApiException e) {
  // An exception is thrown if the media items could not be added
}

PHP

try {

    // List of media item IDs to add
    $mediaItemIds = ["MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID"];

    // ID of the album to add media items to
    $albumId = "ALBUM_ID";

    // Add all given media items to the album
    $response = $photosLibraryClient->batchAddMediaItemsToAlbum($albumId, $mediaItemIds);

} catch (\Google\ApiCore\ApiException $e) {
    // Handle Error
}

Como remover itens de mídia de um álbum

Para remover itens de mídia adicionados de um álbum, chame albums.batchRemoveMediaItems.

Toda a solicitação falhará se itens de mídia inválidos forem especificados. O sucesso parcial não é compatível.

Só é possível remover itens de mídia que o aplicativo adicionou a um álbum ou que foram criados em um álbum como parte de um upload. Nos álbuns compartilhados, só é possível remover itens adicionados por outros colaboradores se você estiver agindo em nome do proprietário do álbum.

Para remover itens de mídia de um álbum, chame albums.batchRemoveMediaItems com os identificadores dos itens de mídia e do álbum.

REST

Veja um cabeçalho para uma solicitação POST:

POST https://photoslibrary.googleapis.com/v1/albums/album-id:batchRemoveMediaItems
Content-type: application/json
Authorization: Bearer oauth2-token

O corpo da solicitação tem a seguinte aparência:

{
   "mediaItemIds": [
     "media-item-id",
     "another-media-item-id",
     ...
   ]
}

Se for bem-sucedida, a resposta retornará uma resposta JSON vazia e o status HTTP de sucesso.

Java

try {
  // List of media item IDs to remove
  List<String> mediaItemIds = Arrays
      .asList("MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID");

  // ID of the album to remove media items from
  String albumId = "ALBUM_ID";

  // Remove all given media items from the album
  photosLibraryClient.batchRemoveMediaItemsFromAlbum(albumId, mediaItemIds);

} catch (ApiException e) {
  // An exception is thrown if the media items could not be removed
}

PHP

try {

    // List of media item IDs to remove
    $mediaItemIds = ["MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID"];

    // ID of the album to remove media items from
    $albumId = "ALBUM_ID";

    // Remove all given media items from the album
    $response = $photosLibraryClient->batchRemoveMediaItemsFromAlbum($albumId, $mediaItemIds);

} catch (\Google\ApiCore\ApiException $e) {
    // Handle Error
}