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 }