Administrar álbumes

En Google Fotos, puedes organizar fotos y otros elementos multimedia mediante álbumes. Un elemento multimedia se puede asociar a uno o más álbumes. Para comenzar a asociar elementos multimedia con un álbum, primero debes crear el álbum.

Alcances de autorización obligatorios

Para crear un álbum, tu app debe solicitar al menos uno de los siguientes permisos de autorización:

  • photoslibrary.appendonly
  • photoslibrary.sharing

Para cambiar el título o la foto de portada de un álbum después de su creación, usa el alcance photoslibrary.edit.appcreateddata.

Cómo crear un álbum

Para crear un álbum, llama a albums.create e incluye title. Ten en cuenta que title está restringido a 500 caracteres.

La llamada muestra un álbum. La app puede almacenar el ID del álbum a partir de esta información y usarlo para subir elementos multimedia al álbum específico.

REST

A continuación, se muestra un encabezado para una solicitud POST:

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

El cuerpo de la solicitud se ve de la siguiente manera:

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

Si la respuesta es exitosa, se mostrará un á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
}

Cambiar los títulos de los álbumes y las fotos de portada

Para cambiar el título o la foto de portada de un álbum, crea una album update call con el identificador del álbum y, luego, incluye el título nuevo o el ID del elemento multimedia de la nueva foto de portada en la solicitud. Deberás usar el permiso de autorización de photoslibrary.edit.appcreateddata para realizar el cambio.

Los títulos de los álbumes no pueden superar los 500 caracteres. Los elementos multimedia de la portada deben ser propiedad del propietario del álbum y pertenecer al álbum del que serán la portada.

REST

Este es un encabezado de solicitud PATCH para actualizar los elementos title y coverPhotomediaItemId de un álbum.

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

Esta solicitud determina qué propiedades se actualizan mediante la inclusión de una máscara de campo, indicada por los parámetros updateMask de la URL. Se debe pasar el parámetro updateMask para cada propiedad del álbum que se actualiza.

Para cada propiedad que actualices, incluye sus detalles en el cuerpo de la solicitud:

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

Si se ejecuta de forma correcta, la respuesta muestra los detalles actualizados de 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
}

Cómo agregar elementos multimedia a un álbum

Puedes llamar a albums.batchAddMediaItems para agregar elementos multimedia de la biblioteca de Google Fotos del usuario a un álbum. Los elementos multimedia se agregan al final del álbum en el orden establecido en esta llamada.

Si se especifica un álbum o elemento multimedia no válido, fallará toda la solicitud. No se admite el resultado parcial.

Cada álbum puede contener hasta 20,000 elementos multimedia. Las solicitudes para agregar más elementos que superen este límite fallarán.

Ten en cuenta que solo puedes agregar elementos multimedia que tu aplicación haya subido a los álbumes que esta haya creado. Los elementos multimedia también deben estar en la biblioteca del usuario. En el caso de los álbumes compartidos, estos deben ser propiedad del usuario o un usuario que ya se haya unido al álbum.

Para agregar elementos multimedia a un álbum, llama a albums.batchAddMediaItems con los identificadores de los elementos multimedia y el álbum.

REST

A continuación, se muestra un encabezado para una solicitud POST:

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

El cuerpo de la solicitud se ve de la siguiente manera:

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

Si se ejecuta de forma correcta, la respuesta muestra una respuesta JSON vacía y el estado de éxito de HTTP.

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
}

Cómo quitar elementos multimedia de un álbum

Para quitar los elementos multimedia que agregaste desde un álbum, llama a albums.batchRemoveMediaItems.

La solicitud completa fallará si se especifican elementos multimedia no válidos. No se admite el éxito parcial.

Ten en cuenta que solo puedes quitar elementos multimedia que tu aplicación haya agregado a un álbum o que se hayan creado en un álbum como parte de una carga. En el caso de los álbumes compartidos, solo puedes quitar los elementos agregados por otros colaboradores si actúas en nombre del propietario del álbum.

Para quitar elementos multimedia de un álbum, llama a albums.batchRemoveMediaItems con los identificadores de los elementos multimedia y del álbum.

REST

A continuación, se muestra un encabezado para una solicitud POST:

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

El cuerpo de la solicitud se ve de la siguiente manera:

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

Si se ejecuta de forma correcta, la respuesta muestra una respuesta JSON vacía y el estado de éxito de HTTP.

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
}