Gérer les albums

Dans Google Photos, vous pouvez organiser vos photos et autres éléments multimédias à l'aide d'albums. Un élément multimédia peut être associé à un ou plusieurs albums. Pour associer des éléments multimédias à un album, vous devez d'abord créer l'album en question.

Champs d'application des autorisations requis

Pour créer un album, votre application doit demander au moins l'un des champs d'application d'autorisation suivants:

  • photoslibrary.appendonly
  • photoslibrary.sharing

Pour modifier le titre ou la photo de couverture des albums après leur création, utilisez le champ d'application photoslibrary.edit.appcreateddata.

Création d'un album

Pour créer un album, appelez albums.create et incluez title. Notez que title est limité à 500 caractères.

L'appel renvoie un album. Votre application peut stocker l'ID d'album à partir de ces informations et l'utiliser pour importer des éléments multimédias dans l'album spécifique.

REST

Voici un en-tête de requête POST:

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

Le corps de la requête se présente comme suit:

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

Si la requête aboutit, la réponse renvoie un album:

{
  "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
}

Modification des titres d'album et des photos de couverture

Pour modifier le titre ou la photo de couverture d'un album, créez une album update call avec l'identifiant de l'album, puis incluez le nouveau titre ou l'ID d'élément multimédia de la nouvelle photo de couverture dans la requête. Vous devez utiliser le champ d'application d'autorisation photoslibrary.edit.appcreateddata pour effectuer la modification.

Les titres des albums ne doivent pas dépasser 500 caractères. Les éléments multimédias de la pochette doivent appartenir au propriétaire de l'album et faire partie de l'album pour lequel il servira de couverture.

REST

Voici un en-tête de requête PATCH permettant de mettre à jour les paramètres title et coverPhotomediaItemId d'un album.

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

Cette requête détermine les propriétés en cours de mise à jour en incluant un masque de champ, indiqué par les paramètres updateMask dans l'URL. Le paramètre updateMask doit être transmis pour chaque propriété d'album en cours de mise à jour.

Pour chaque propriété que vous mettez à jour, incluez ses détails dans le corps de la requête:

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

Si la requête aboutit, la réponse renvoie les détails du album mis à jour:

{
  "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
}

Ajout d'éléments multimédias à un album

Vous pouvez ajouter des éléments multimédias de la bibliothèque Google Photos de l'utilisateur à un album en appelant albums.batchAddMediaItems. Les éléments multimédias sont ajoutés à la fin de l'album dans l'ordre indiqué dans cet appel.

La requête entière échouera si un élément multimédia ou un album non valide est spécifié. Les succès partiels ne sont pas acceptés.

Chaque album peut contenir jusqu'à 20 000 éléments multimédias. Les demandes d'ajout d'éléments qui dépasseraient cette limite échoueront.

Notez que vous ne pouvez ajouter que des éléments multimédias importés par votre application aux albums créés par votre application. Les éléments multimédias doivent également se trouver dans la bibliothèque de l'utilisateur. Les albums partagés doivent soit appartenir à l'utilisateur, soit être un collaborateur ayant déjà rejoint l'album.

Pour ajouter des éléments multimédias à un album, appelez albums.batchAddMediaItems avec les identifiants des éléments multimédias et de l'album.

REST

Voici un en-tête de requête POST:

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

Le corps de la requête se présente comme suit:

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

Si la requête aboutit, la réponse renvoie une réponse JSON vide et l'état HTTP "Success".

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
}

Supprimer des éléments multimédias d'un album

Vous pouvez supprimer les éléments multimédias que vous avez ajoutés d'un album en appelant albums.batchRemoveMediaItems.

La requête entière échouera si des éléments multimédias non valides sont spécifiés. Les réussites partielles ne sont pas possibles.

Notez que vous ne pouvez supprimer que les éléments multimédias que votre application a ajoutés à un album ou qui ont été créés dans un album lors d'une importation. Pour les albums partagés, vous ne pouvez supprimer les éléments ajoutés par d'autres collaborateurs que si vous agissez pour le compte du propriétaire de l'album.

Pour supprimer des éléments multimédias d'un album, appelez albums.batchRemoveMediaItems avec les identifiants des éléments multimédias et de l'album.

REST

Voici un en-tête de requête POST:

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

Le corps de la requête se présente comme suit:

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

Si la requête aboutit, la réponse renvoie une réponse JSON vide et l'état HTTP "Success".

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
}