Medya öğelerine erişme

Şu numarayı aradıktan sonra: bir fotoğraf kitaplığının veya albümün içeriğini listeleme, geri gönderilen medya öğelerini depolamak yerine, uygulamanız Medya öğelerinin kimlikleri. 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, istekte bulunabilirsiniz.

  • photoslibrary.readonly, kullanıcının kütüphane
  • photoslibrary.readonly.appcreateddata yalnızca şu özelliği taşıyan medya öğelerine erişim izni verir: uygulama tarafından oluşturulmuş

Medya öğeleri

CEVAP mediaItem şu sayfaya yüklenmiş bir fotoğraf veya video gibi bir medyanın temsilidir: Google Fotoğraflar kitaplığı. 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 İşlenmemiş 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, yalnızca kullanıcı tarafından açılır. 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'da kullanıcıya gösterilen medya öğesinin dosya adı uygulama (öğenin bilgi bölümünde).
mediaMetadata Temel alınan medya türüne göre değişir (ör. photo) veya video. Yükü azaltmak için alan maskeleri kullanılabilir.
contributorInfo

Bu alan yalnızca medya öğesi paylaşılan bir albümdeyse doldurulur bu uygulama tarafından oluşturuldu ve kullanıcı photoslibrary.sharing kapsamı.

Bu medyayı ekleyen kullanıcıyla ilgili bilgileri içerir öğe. Daha fazla bilgi için Medya paylaşma konusuna bakın.

Medya öğesi al

Bir medya öğesini almak için şu numarayı arayın: mediaItems.get dosyasını kullanarak mediaItemId. İ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 meta veri içeriyor paylaşılan albümdeki öğeler için. 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 bir video ise öncelikle video dosyasının işlenmesi gerekir. İ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. baseUrl bir video medya öğesi, 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

Bir fotoğraf medya öğesinin yanıtı aşağıdaki gibi 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"
  }
}

Bir video medya öğesinin yanıtı aşağıdaki gibi 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 özelliği, fotoğraf öğeleri için meta verileri 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 öğeleri için meta verileri 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 öğ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();
        // ...
        $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ç MediaItem içerir veya hata varsa Status.

Tek bir aramada en fazla 50 medya öğesi için istekte bulunabilirsiniz. Görev listesi medya öğeleri, yinelenen tanımlayıcılar 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 Photos Library API'deki temel URL'ler ortamın baytlarına ve öğeler. Uygulamanız, çeşitli temel URL'leri kullanarak medya öğelerini indirebilir. veya medya öğelerini uygulamanızda gösterebilirsiniz. Temel URL'ler, Kullanıcı, albümleri listelediğinizde veya medya öğelerine eriştiğinizde yanıta eklenir. Bunlar: 60 dakika boyunca geçerlidir ve düşünülebilir.

Ç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şebilirsiniz.
  • profilePictureBaseUrl: İşletme sahibinin profil fotoğrafına doğrudan erişin. mediaItem.
ziyaret edin.

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, w ve yükseklik, h parametreleridir.

Ş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

Medya öğesini en fazla 2.048 piksel ve 1.024 pikselden uzun olmamalıdır:

https://lh3.googleusercontent.com/p/AF....VnnY=w2048-h1024
c

Açıklama

Kırpma, c parametresi.

Resmi tam genişlik ve yükseklikte kırpmak istiyorsanız daha sonra, temel URL'yi isteğe bağlı -c parametresi ve zorunlu w ve h parametreleri.

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, d parametresi.

Tüm EXIF meta verilerini koruyarak resmi indirmek isterseniz konum meta verileri hariç, temel URL'yi d parametresinden yararlanın.

Ö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 şunlardır:

Parametre
dv

Açıklama

mediaItem adlı videonun baytlarına erişmek için şunları birleştirin: indirme videosunun yer aldığı baseUrl, dv parametresinden sonra bir değer girin.

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 indirmelerine ilişkin temel URL'lerin tamamlanması birkaç saniye sürebilir döndüren bir değer olmalıdır. Video indirmelerinde varsayılan olarak H.264 kodlaması kullanılır. H.264 kodlaması başarısız olursa VP9 kullanılır.

Bu parametreyi kullanmadan önce medya öğelerinin mediaMetadata.status alanı READY. Aksi halde, medya öğeniz İşlemin tamamlanmış olması durumunda hatası.

Örnekler:

base-url=dv

Aşağıdaki örnekte bir dosyanın baytlarının nasıl indirileceği gösterilmektedir video:

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 resimleri bir oynatmanın yer paylaşımını içerir düğmesini tıklayın. Bu yer paylaşımını kaldırmak için -no parametresine bakın.

Örnekler:

Resim temel URL'leri tablosuna bakın inceleyebilirsiniz.

no

Açıklama

Küçük resim yer paylaşımını kaldırma, no parametresi.

Yer paylaşımı olmayan bir videonun küçük resmini almak istiyorsanız temel URL'yi no parametresinden sonra bir değer girin.

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. Şu parametreleri kullanabilirsiniz: görsel temel URL'lerini ya da Hareketli fotoğraf baseUrl istekleri için video temel URL'leri.

Parametre
dv

Açıklama

Bir hareketli fotoğraf medya öğesinin video öğesini almak için video temel URL'lerinden indirmek üzere olduğu gibi dv parametresini kullanın.

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.