Fotoğraf kitaplığının veya albümünün içeriğini listelemek için çağrı yaptıktan sonra uygulamanız, döndürülen medya öğelerini depolamak yerine medya öğelerinin kimliklerini depolamalıdır. Bunun nedeni, medya öğelerinin içeriğinin değişir ve belirli bir süre sonra yanıta dahil edilen URL'lerin süresi dolar. İlgili içeriği oluşturmak için kullanılan medya öğesi kimliği, fotoğraf veya video gibi bir medya öğesini benzersiz şekilde tanımlar kullanıcının kitaplığından kaldırabilirsiniz.
Uygulamanızın, bir kullanıcının fotoğrafını veya videosunu uzun süre önbelleğe almaması gerektiğini unutmayın. kullanım alanına bağlı olarak saklayabilir veya ekleyebilirsiniz. medya öğesi kimliğini şu şekilde önbelleğe alın: uzun as gerekir. Ayrıca şunu da unutmayın: user verileri de gizliliğe tabidir. yükümlülükler.
Gerekli yetkilendirme kapsamları
Medya öğelerine erişmek için uygulamanızın aşağıdakilerden en az birini istemesi gerekir yetkilendirme kapsamlarına sahip olmanız gerekir. Yanıtta döndürülen medya öğelerine erişim, istediğiniz kapsamlara bağlıdır.
photoslibrary.readonly
, kullanıcının kütüphanephotoslibrary.readonly.appcreateddata
yalnızca şu özelliği taşıyan medya öğelerine erişim izni verir: uygulama tarafından oluşturulmuş
Medya öğeleri
mediaItem
, Google Fotoğraflar kitaplığına yüklenen fotoğraf veya video gibi medyanın bir temsilidir. Bu üst düzey bir nesnedir ve özellikleri
temel medya türüne göre farklılık gösterir.
Aşağıdaki tabloda mediaItem
özellikleri listelenmektedir:
Özellikler | |
---|---|
id |
Nesneyi tanımlamak için kullanılan kalıcı, sabit bir kimliktir. |
description |
Medya öğesinin içeride görüldüğü şekilde açıklaması Google Fotoğraflar. |
baseUrl |
Ham baytlara erişmek için kullanılır. Daha fazla bilgi için Temel URL'ler bölümüne bakın. |
productUrl |
Google Fotoğraflar'daki resmin bağlantısı. Bu bağlantı geliştirici tarafından değil, yalnızca kullanıcı tarafından açılabilir. URL'ler emin olmanız gerekir. URL bir albüm aramasından alındıysa albümdeki öğeyi işaret eder. |
mimeType |
Medya türünün kolayca tanımlanmasına yardımcı olacak medya öğesinin türü
(örneğin: image/jpg ). |
filename |
Google Fotoğraflar uygulamasında kullanıcıya gösterilen medya öğesinin dosya adı (öğenin bilgi bölümünde). |
mediaMetadata |
Medyanın temel türüne (ör. photo veya video ) göre değişir.
Yükün azaltılması için alan maskeleri kullanılabilir.
|
contributorInfo |
Bu alan yalnızca medya öğesi paylaşılan bir albümdeyse doldurulur
bu uygulama tarafından oluşturulmuştur ve kullanıcı
Bu medya öğesini ekleyen katkıda bulunanla ilgili bilgileri içerir. Daha fazla bilgi için Medya paylaşma konusuna bakın. |
Medya öğesi alma
Bir medya öğesini almak için mediaItemId
kullanarak mediaItems.get işlevini çağırın. İstek tek bir medya öğesi döndürür.
mediaItem
, kimlik, açıklama ve URL gibi özellikleri içerir. İlgili içeriği oluşturmak için kullanılan
photo
veya video
içindeki ek bilgiler, içindeki meta verilere bağlıdır
seçin. Tüm mülkler mevcut olmayabilir. ContributorInfo
, paylaşılan bir albümün parçası olan öğelerin meta verilerini içerir. Bu alan yalnızca aşağıdaki durumlarda dahil edilir:
listelenen bir
kullanıcının photoslibrary.sharing
iznini verdiği paylaşılan albüm
yetkilendirme kapsamı.
Medya öğesi video ise önce video dosyası işlenmelidir. İlgili içeriği oluşturmak için kullanılan
mediaItem
, mediaMetadata
içinde şunu açıklayan bir status
alanı içeriyor:
durumunu kontrol edebilirsiniz. Yeni yüklenen bir dosya
videoProcessingStatus
PROCESSING
değerine, kullanılacak READY
değerine ayarlayın. Video medya öğesinin baseUrl
video işlenene kadar kullanılamaz.
REST
İşte bir GET isteği:
GET https://photoslibrary.googleapis.com/v1/mediaItems/media-item-id Content-type: application/json Authorization: Bearer oauth2-token
Fotoğraf medya öğesi için yanıt şu şekilde görünür. Fotoğraf özelliği, fotoğraf öğeleri için meta veriler içerir.
{ "id": "media-item-id", "description": "item-description", "productUrl": "url-to-open-in-google-photos", "baseUrl": "base-url_do-not-use-directly", "mimeType": "mime-type-of-media", "filename": "item-filename", "mediaMetadata": { "width": "media-item-width", "height": "media-item-height", "creationTime": "media-item-creation-time", "photo": { "cameraMake": "make-of-the-camera", "cameraModel": "model-of-the-camera", "focalLength": "focal-length-of-the-camera-lens", "apertureFNumber": "aperture-f-number-of-the-camera-lens", "isoEquivalent": "iso-of-the-camera", "exposureTime": "exposure-time-of-the-camera-aperture" } }, "contributorInfo": { "profilePictureBaseUrl": "profile-picture-base-url_do-not-use-directly", "displayName": "name-of-user" } }
Video medya öğesi için yanıt şöyle görünür. Video mülkündeki her bir mülk, video öğeleri için meta veriler içerir.
{ "id": "media-item-id", "description": "item-description", "productUrl": "url-to-open-in-google-photos", "baseUrl": "base-url_do-not-use-directly", "mimeType": "mime-type-of-media", "filename": "item-filename", "mediaMetadata": { "width": "media-item-width", "height": "media-item-height", "creationTime": "media-item-creation-time", "video": { "cameraMake": "make-of-the-camera", "cameraModel": "model-of-the-camera", "fps": "frame-rate-of-the-video", "status": "READY" }, }, "contributorInfo": { "profilePictureBaseUrl": "profile-picture-base-url_do-not-use-directly", "displayName": "name-of-user" } }
Java
Fotoğraf mülkü, fotoğraf öğelerinin meta verilerini içerir.
try { // Get a media item using its ID String mediaItemId = "..."; MediaItem item = photosLibraryClient.getMediaItem(mediaItemId); // Get some properties from the retrieved media item String id = item.getId(); String description = item.getDescription(); String baseUrl = item.getBaseUrl(); String productUrl = item.getProductUrl(); // ... if (item.hasMediaMetadata()) { // The media item contains additional metadata, such as the height and width MediaMetadata metadata = item.getMediaMetadata(); long height = metadata.getHeight(); long width = metadata.getWidth(); Timestamp creationTime = metadata.getCreationTime(); // ... if (metadata.hasPhoto()) { // This media item is a photo and has additional photo metadata Photo photoMetadata = metadata.getPhoto(); String cameraMake = photoMetadata.getCameraMake(); String cameraModel = photoMetadata.getCameraModel(); float aperture = photoMetadata.getApertureFNumber(); int isoEquivalent = photoMetadata.getIsoEquivalent(); // ... } } if (item.hasContributorInfo()) { // A user has contributed this media item to a shared album ContributorInfo contributorInfo = item.getContributorInfo(); String profilePictureBaseUrl = contributorInfo.getProfilePictureBaseUrl(); String displayName = contributorInfo.getDisplayName(); } } catch (ApiException e) { // Handle error }
Video mülkü, video öğelerinin meta verilerini içerir.
try { // Get a media item using its ID String mediaItemId = "..."; MediaItem item = photosLibraryClient.getMediaItem(mediaItemId); // Get some properties from the retrieved media item String id = item.getId(); String description = item.getDescription(); String baseUrl = item.getBaseUrl(); String productUrl = item.getProductUrl(); // ... if (item.hasMediaMetadata()) { // The media item contains additional metadata, such as the height and width MediaMetadata metadata = item.getMediaMetadata(); long height = metadata.getHeight(); long width = metadata.getWidth(); Timestamp creationTime = metadata.getCreationTime(); // ... if (metadata.hasVideo()) { // This media item is a video and has additional video metadata Video videoMetadata = metadata.getVideo(); VideoProcessingStatus status = videoMetadata.getStatus(); if (status.equals(VideoProcessingStatus.READY)) { // This video media item has been processed String cameraMake = videoMetadata.getCameraMake(); String cameraModel = videoMetadata.getCameraModel(); double fps = videoMetadata.getFps(); // ... } } } if (item.hasContributorInfo()) { // A user has contributed this media item to a shared album ContributorInfo contributorInfo = item.getContributorInfo(); String profilePictureBaseUrl = contributorInfo.getProfilePictureBaseUrl(); String displayName = contributorInfo.getDisplayName(); } } catch (ApiException e) { // Handle error }
PHP
Fotoğraf özelliği, fotoğraf öğeleri için meta verileri içerir.
try { // Get a media item using its ID $mediaItemId = "..."; $item = $photosLibraryClient->getMediaItem($mediaItemId); // Get some properties from the retrieved media item $id = $item->getId(); $description = $item->getDescription(); $baseUrl = $item->getBaseUrl(); $productUrl = $item->getProductUrl(); // ... $metadata = $item->getMediaMetadata(); if (!is_null($metadata)) { // The media item contains additional metadata, such as the height and width $height = $metadata->getHeight(); $width = $metadata->getWidth(); $creationTime = $metadata->getCreationTime(); // ... $photoMetadata = $metadata->getPhoto(); if (!is_null($photoMetadata)) { // This media item is a photo and has additional photo metadata $cameraMake = $photoMetadata->getCameraMake(); $cameraModel = $photoMetadata->getCameraModel(); $aperture = $photoMetadata->getApertureFNumber(); $isoEquivalent = $photoMetadata->getIsoEquivalent(); // ... } } $contributorInfo = $item->getContributorInfo(); if (!is_null($contributorInfo)) { // A user has contributed this media item to a shared album $profilePictureBaseUrl = $contributorInfo->getProfilePictureBaseUrl(); $displayName = $contributorInfo->getDisplayName(); } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
Video mülkü, video öğelerinin meta verilerini içerir.
try { // Get a media item using its ID $mediaItemId = "..."; $item = $photosLibraryClient->getMediaItem($mediaItemId); // Get some properties from the retrieved media item $id = $item->getId(); $description = $item->getDescription(); $baseUrl = $item->getBaseUrl(); $productUrl = $item->getProductUrl(); // ... $metadata = $item->getMediaMetadata(); if (!is_null($metadata)) { // The media item contains additional metadata, such as the height and width $height = $metadata->getHeight(); $width = $metadata->getWidth(); $creationTime = $metadata->getCreationTime(); // ... $videoMetadata = $metadata->getVideo(); if (!is_null($videoMetadata)) { // This media item is a video and has additional video metadata if (VideoProcessingStatus::READY == $videoMetadata->getStatus()) { // This video media item has been processed $cameraMake = $videoMetadata->getCameraMake(); $cameraModel = $videoMetadata->getCameraModel(); $fps = $videoMetadata->getFps(); // ... } } } $contributorInfo = $item->getContributorInfo(); if (!is_null($contributorInfo)) { // A user has contributed this media item to a shared album $profilePictureBaseUrl = $contributorInfo->getProfilePictureBaseUrl(); $displayName = $contributorInfo->getDisplayName(); } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
Birden çok medya öğesi al
Birden fazla medya öğesini tanımlayıcılarına göre almak için şu numarayı arayın:
mediaItems.batchGet
mediaItemId
kullanıyor.
İstek,
MediaItemResults
istekte sağlanan medya öğesi tanımlayıcılarının sırasına göre belirlenir. Her sonuç, bir MediaItem
veya hata varsa Status
içerir.
Tek bir çağrıda isteyebileceğiniz maksimum medya öğesi sayısı 50'dir. Medya öğeleri listesi yinelenen tanımlayıcı içermemelidir ve boş olamaz.
REST
Aşağıda,
medya öğeleri. Her medya öğesi tanımlayıcısını yeni
İsteğin bir parçası olarak mediaItemIds
sorgu parametresi:
GET https://photoslibrary.googleapis.com/v1/mediaItems:batchGet?mediaItemIds=media-item-id&mediaItemIds=another-media-item-id&mediaItemIds=incorrect-media-item-id Content-type: application/json Authorization: Bearer oauth2-token
GET isteği aşağıdaki yanıtı döndürür:
{ "mediaItemResults": [ { "mediaItem": { "id": "media-item-id", ... } }, { "mediaItem": { "id": "another-media-item-id", ... } }, { "status": { "code": 3, "message": "Invalid media item ID." } } ] }
Java
try { // List of media item IDs to retrieve List<String> mediaItemIds = Arrays .asList("MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID", "INCORRECT_MEDIA_ITEM_ID"); // Get a list of media items using their IDs BatchGetMediaItemsResponse response = photosLibraryClient .batchGetMediaItems(mediaItemIds); // Loop over each result for (MediaItemResult result : response.getMediaItemResultsList()) { // Each MediaItemresult contains a status and a media item if (result.hasMediaItem()) { // The media item was successfully retrieved, get some properties MediaItem item = result.getMediaItem(); String id = item.getId(); // ... } else { // If the media item is not set, an error occurred and the item could not be loaded // Check the status and handle the error Status status = result.getStatus(); // ... } } } catch (ApiException e) { // Handle error }
PHP
try { // List of media item IDs to retrieve $mediaItemIds = ["MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID", "INCORRECT_MEDIA_ITEM_ID"]; // Get a list of media items using their IDs $response = $photosLibraryClient->batchGetMediaItems($mediaItemIds); // Loop over each result foreach ($response->getMediaItemResults() as $itemResult) { // Each MediaItemresult contains a status and a media item $mediaItem = $itemResult->getMediaItem(); if(!is_null($mediaItem)){ // The media item was successfully retrieved, get some properties $id = $mediaItem->getId(); // ... } else { // If the media item is null, an error occurred and the item could not be loaded } } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
Temel URL'ler
Google Fotoğraflar Kitaplığı API'sindeki temel URL'ler, medya öğelerinin baytlarına erişmenize olanak tanır. Uygulamanız, çeşitli temel URL'leri kullanarak medya öğelerini indirebilir veya uygulamanızda medya öğelerini görüntüleyebilir. Temel URL'ler, albümleri listelediğinizde veya medya öğelerine eriştiğinizde yanıta dahil edilen dizelerdir. Bu URL'ler 60 dakika boyunca geçerlidir ve olduğu gibi kullanılamayacakları için ek parametreler gerektirir.
Çeşitli temel URL'ler şunlardır:
baseUrl
: Fotoğrafa, videonun küçük resmine doğrudan erişin veya video baytlarını indirin.coverPhotoBaseUrl
: Albümün kapak fotoğrafına doğrudan erişin.profilePictureBaseUrl
:mediaItem
sahibinin profil fotoğrafına doğrudan erişme
Görsel temel URL'leri
Resim temel URL'leriyle kullanabileceğiniz seçeneklerin listesi aşağıda verilmiştir:
Parametre | |
---|---|
w , h |
Açıklama Genişlik, Şuna ait fotoğraf veya küçük resim gibi bir resim medya öğesine erişmek için: bir videoda görüntülemek için, burada gösterilen olanak sağlar (böylece resimler, boyutlarını koruyarak). Bunu yapmak için temel URL'yi aşağıda gösterildiği gibi gerekli boyutlarla birleştirin örnekler. Örnekler: base-url=wmax-width-hmax-height 2048 pikselden geniş ve 1024 pikselden yüksek olmayan bir medya öğesi göstermek için aşağıdaki örneği inceleyin: https://lh3.googleusercontent.com/p/AF....VnnY=w2048-h1024 |
c |
Açıklama Kırpma, Resmi tam genişlik ve yükseklikte kırpmak istiyorsanız
daha sonra, temel URL'yi
isteğe bağlı Boyut (piksel cinsinden) [1, 16383] aralığında olmalıdır. İkisinden biri resim genişliği veya yüksekliği istenen boyutu aşıyorsa, resim küçültülür ve kırpılır (en boy oranı korunarak). Örnekler: base-url=wmax-width-hmax-height-c Bu örnekte, uygulama 256 piksel genişliğinde ve 256 piksel yüksekliğinde (ör. küçük resim: https://lh3.googleusercontent.com/p/AF....VnnY=w256-h256-c |
d |
Açıklama İndirme, Resmi, konum meta verileri hariç tüm Exif meta verilerini koruyarak indirmek istiyorsanız temel URL'yi Örnekler: base-url=d Bu örnekte, uygulama tüm Meta veriler (konum meta verileri hariç): https://lh3.googleusercontent.com/p/Az....XabC=d |
Video temel URL'leri
Video temel URL'leriyle kullanabileceğiniz seçeneklerin listesi aşağıda verilmiştir:
Parametre | |
---|---|
dv |
Açıklama
dv parametresi yüksek kalite ister. orijinal videonun kod dönüşümü yapılmış sürümü Parametre w ve h ile uyumlu parametreleridir. Video indirmelerinin temel URL'lerinin bayt döndürmesi birkaç saniye sürebilir. Bu parametreyi kullanmadan önce medya öğelerinin
Örnekler: base-url=dv Aşağıdaki örnekte, bir videonun baytlarının nasıl indirileceği gösterilmektedir: https://lh3.googleusercontent.com/p/AF....BsdZ=dv |
w , h , c ve
d |
Açıklama Videonun küçük resmine erişmek için resim temel URL parametrelerinden birini kullanın. Varsayılan olarak tüm video küçük resimlerinde bir oynatma düğmesi yer paylaşımı bulunur. Bu yer paylaşımını kaldırmak için -no parametresine bakın. Örnekler: Örnekler için resim temel URL'leri tablosuna bakın. |
no |
Açıklama Küçük resim yer paylaşımını kaldır Bir videonun küçük resmini oynatma düğmesi yer paylaşımı olmadan almak istiyorsanız temel URL'yi no parametresiyle birleştirin. no parametresi, "the" resim temel URL parametreleri. Örnekler: base-url=wmax-width-hmax-height-no Aşağıdaki örnekte, oynatma düğmesi yer paylaşımı içermeyen ve tam olarak 1.280 piksel genişliğinde ve 720 piksel yüksekliğinde bir video küçük resmi gösterilmektedir: https://lh3.googleusercontent.com/p/AF....VnnY=w1280-h720-no |
Hareketli fotoğraf temel URL'leri
Hareketli fotoğraflar hem fotoğraf hem de video öğeleri içerir. Hareketli fotoğraf baseUrl
istekleri için resim ana URL'lerinden veya video ana URL'lerinden parametreleri kullanabilirsiniz.
Parametre | |
---|---|
dv |
Açıklama Hareketli fotoğraf medya öğesinin video öğesini almak için |
w , h , c ve
d |
Açıklama Bir hareketli fotoğraf medya öğesinin fotoğraf öğesini almak için resim temel URL'lerinin biçimini kullanın. |