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