Управление альбомами

В Google Фото вы можете упорядочивать фотографии и другие элементы мультимедиа с помощью альбомов. Элемент мультимедиа может быть связан с одним или несколькими альбомами. Чтобы начать связывать элементы мультимедиа с альбомом, необходимо сначала создать альбом.

Требуемые области авторизации

Чтобы создать альбом, ваше приложение должно запросить хотя бы одну из следующих областей авторизации :

  • photoslibrary.appendonly
  • photoslibrary.sharing

Чтобы изменить название или фотографию обложки альбомов после их создания, используйте область действия photoslibrary.edit.appcreateddata .

Создание нового альбома

Чтобы создать альбом, вызовите albums.create и укажите title . Обратите внимание, что title ограничен 500 символами.

Вызов возвращает альбом . Ваше приложение может сохранить идентификатор альбома из этой информации и использовать его для загрузки элементов мультимедиа в определенный альбом.

ОТДЫХАТЬ

Вот заголовок POST-запроса:

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

Тело запроса выглядит так:

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

В случае успеха ответ возвращает альбом :

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

Ява

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
}

Изменение названий альбомов и обложек

Чтобы изменить название альбома или фотографию обложки, сделайте album update call с идентификатором альбома и включите в запрос новое название или идентификатор мультимедийного элемента новой фотографии обложки. Вам нужно будет использовать область авторизации photoslibrary.edit.appcreateddata , чтобы внести изменения.

Названия альбомов могут содержать не более 500 символов. Материалы обложки должны принадлежать владельцу альбома и принадлежать альбому, для которого они будут обложкой.

ОТДЫХАТЬ

Вот заголовок запроса PATCH для обновления title альбома и coverPhotomediaItemId .

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

Этот запрос определяет, какие свойства обновляются, включая маску поля, указанную параметрами updateMask в URL-адресе. Параметр updateMask необходимо передать для каждого обновляемого свойства альбома.

Для каждого свойства, которое вы обновляете, включите его детали в тело запроса:

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

В случае успеха ответ возвращает обновленные сведения об 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"
}

Ява

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
}

Добавление медиафайлов в альбом

Вы можете добавить элементы мультимедиа из пользовательской библиотеки Google Фото в альбом, вызвав albums.batchAddMediaItems . Элементы мультимедиа добавляются в конец альбома в порядке, указанном в этом вызове.

Весь запрос завершится ошибкой, если указан недопустимый элемент мультимедиа или альбом. Частичный успех не поддерживается.

Каждый альбом может содержать до 20 000 элементов мультимедиа. Запросы на добавление дополнительных элементов, которые превышают этот предел, не будут выполнены.

Обратите внимание, что в альбомы, созданные вашим приложением , можно добавлять только элементы мультимедиа, загруженные вашим приложением . Элементы мультимедиа также должны находиться в библиотеке пользователя. Для общих альбомов они должны либо принадлежать пользователю, либо пользователь должен быть соавтором, который уже присоединился к альбому.

Чтобы добавить элементы мультимедиа в альбом, вызовите albums.batchAddMediaItems с идентификаторами элементов мультимедиа и альбома.

ОТДЫХАТЬ

Вот заголовок POST-запроса:

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

Тело запроса выглядит так:

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

В случае успеха ответ возвращает пустой ответ JSON и статус HTTP Success.

Ява

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
}

Удаление элементов мультимедиа из альбома

Вы можете удалить элементы мультимедиа, которые вы добавили из альбома, вызвав albums.batchRemoveMediaItems .

Весь запрос завершится ошибкой, если будут указаны недопустимые элементы мультимедиа. Частичный успех не поддерживается.

Обратите внимание, что вы можете удалять только элементы мультимедиа, которые ваше приложение добавило в альбом или которые были созданы в альбоме как часть загрузки . Для альбомов, к которым предоставлен общий доступ, вы можете удалять элементы, добавленные другими соавторами, только если вы действуете от имени владельца альбома.

Чтобы удалить элементы мультимедиа из альбома, вызовите albums.batchRemoveMediaItems с идентификаторами элементов мультимедиа и альбома.

ОТДЫХАТЬ

Вот заголовок POST-запроса:

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

Тело запроса выглядит так:

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

В случае успеха ответ возвращает пустой ответ JSON и статус HTTP Success.

Ява

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
}