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

В 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
}