Mengakses item media yang dibuat aplikasi

Setelah melakukan panggilan untuk mencantumkan konten galeri foto atau album, aplikasi Anda harus menyimpan ID item media, bukan menyimpan item media yang ditampilkan. Hal ini karena konten item media dapat berubah dan setelah waktu tertentu, URL yang disertakan dalam respons akan berakhir masa berlakunya. ID item media mengidentifikasi item media secara unik, seperti foto atau video di dalam library pengguna.

Cakupan otorisasi yang diperlukan

Mengakses item media yang dibuat aplikasi memerlukan cakupan photoslibrary.readonly.appcreateddata. Untuk informasi selengkapnya tentang cakupan, lihat Cakupan otorisasi.

Item media

mediaItem adalah representasi media seperti foto atau video yang telah diupload ke koleksi Google Foto. Ini adalah objek tingkat teratas dan propertinya dapat berbeda berdasarkan jenis media yang mendasarinya.

Tabel berikut mencantumkan properti mediaItem:

Properti
id ID permanen dan stabil yang digunakan untuk mengidentifikasi objek.
description Deskripsi item media seperti yang terlihat di dalam Google Foto.
baseUrl Digunakan untuk mengakses byte mentah. Untuk mengetahui informasi selengkapnya, lihat URL Dasar.
productUrl

Link ke gambar di dalam Google Foto. Link ini tidak dapat dibuka oleh developer, hanya oleh pengguna. URL mengarah ke item media dalam library. Jika diambil dari penelusuran album, URL tersebut akan mengarah ke item dalam album.

mimeType Jenis item media untuk membantu mengidentifikasi jenis media dengan mudah (misalnya: image/jpg).
filename Nama file item media yang ditampilkan kepada pengguna di aplikasi Google Foto (dalam bagian info item).
mediaMetadata Bervariasi bergantung pada jenis media yang mendasarinya, seperti, photo atau video. Untuk mengurangi payload, field mask dapat digunakan.

Dapatkan item media

Untuk mengambil item media, panggil mediaItems.get menggunakan mediaItemId. Permintaan menampilkan satu item media.

mediaItem berisi properti, seperti ID, deskripsi, dan URL. Informasi tambahan dalam photo atau video didasarkan pada metadata dalam file. Mungkin tidak semua properti ada.

Jika item media adalah video, file video harus diproses terlebih dahulu. mediaItem berisi kolom status di dalam mediaMetadata yang menjelaskan status pemrosesan file video. File yang baru diupload akan menampilkan videoProcessingStatus dengan nilai PROCESSING terlebih dahulu, sebelum menjadi READY untuk digunakan. baseUrl item media video tidak tersedia hingga video selesai diproses.

REST

Berikut adalah permintaan GET:

GET https://photoslibrary.googleapis.com/v1/mediaItems/media-item-id
Content-type: application/json
Authorization: Bearer oauth2-token

Respons untuk item media foto akan terlihat seperti ini. Properti foto berisi metadata untuk item foto.

{
  "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"
  }
}

Respons untuk item media video terlihat seperti ini. Properti video berisi metadata untuk item video.

{
  "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"
  }
}

Mendapatkan beberapa item media

Untuk mengambil beberapa item media berdasarkan ID-nya, panggil mediaItems.batchGet menggunakan mediaItemId.

Permintaan menampilkan daftar MediaItemResults sesuai urutan ID item media yang diberikan dalam permintaan. Setiap hasil berisi MediaItem atau Status jika terjadi error.

Jumlah maksimum item media yang dapat Anda minta dalam satu panggilan adalah 50. Daftar item media tidak boleh berisi ID duplikat dan tidak boleh kosong.

REST

Berikut adalah permintaan GET yang menunjukkan akses item media yang berhasil dan gagal. Tentukan setiap ID item media sebagai parameter kueri mediaItemIds baru sebagai bagian dari permintaan:

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

Permintaan GET menampilkan respons berikut:

{
  "mediaItemResults": [
    {
      "mediaItem": {
        "id": "media-item-id",
        ...
      }
    },
    {
      "mediaItem": {
        "id": "another-media-item-id",
        ...
      }
    },
    {
      "status": {
        "code": 3,
        "message": "Invalid media item ID."
      }
    }
  ]
}

URL Dasar

URL dasar di Google Photos API memberikan akses ke byte mentah item media, sehingga aplikasi Anda dapat mendownload atau menampilkannya. URL ini disertakan dalam respons saat mencantumkan album (Library API) atau mengakses item media (Library API dan Picker API). Ingat, URL dasar memerlukan parameter tambahan agar berfungsi dengan benar.

Untuk Picker API:

Semua objek PickedMediaItem.mediaFile menyertakan baseUrl.

URL dasar tetap aktif selama 60 menit, tetapi dapat berakhir lebih cepat jika pengguna membatalkan izin aplikasi Anda melalui setelan Akun Google mereka.

Untuk Library API:

URL dasar tetap aktif selama 60 menit.

Berbagai URL dasarnya adalah:

  • baseUrl: Mengakses foto, thumbnail untuk video, atau mendownload byte video secara langsung.
  • coverPhotoBaseUrl: Mengakses langsung foto sampul untuk album.
  • profilePictureBaseUrl: Mengakses langsung foto profil pemilik mediaItem.

URL dasar gambar

Berikut adalah daftar opsi yang dapat Anda gunakan dengan URL dasar gambar:

Parameter
w, h

Deskripsi

Parameter lebar, w, dan tinggi, h.

Untuk mengakses item media gambar, seperti foto atau thumbnail untuk video, Anda harus menentukan dimensi yang ingin ditampilkan di aplikasi (sehingga gambar dapat diskalakan ke dimensi ini sekaligus mempertahankan rasio aspek). Untuk melakukannya, gabungkan URL dasar dengan dimensi yang diperlukan seperti yang ditunjukkan dalam contoh.

Contoh:

base-url=wmax-width-hmax-height

Berikut contoh untuk menampilkan item media dengan ukuran tidak lebih dari 2048 px dan tidak lebih tinggi dari 1024 px:

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

Deskripsi

Pemangkasan, parameter c.

Jika Anda ingin memangkas gambar ke dimensi lebar dan tinggi yang tepat yang telah Anda tentukan, gabungkan URL dasar dengan parameter -c opsional beserta parameter w dan h wajib.

Ukuran (dalam piksel) harus dalam rentang [1, 16383]. Jika lebar atau tinggi gambar melebihi ukuran yang diminta, gambar akan diskalakan ke bawah dan dipangkas (mempertahankan rasio aspek).

Contoh:

base-url=wmax-width-hmax-height-c

Dalam contoh ini, aplikasi menampilkan item media dengan lebar 256 px dan tinggi 256 px, seperti thumbnail:

https://lh3.googleusercontent.com/p/AF....VnnY=w256-h256-c
d

Deskripsi

Parameter download, d.

Jika Anda ingin mendownload gambar yang mempertahankan semua metadata Exif kecuali metadata lokasi, gabungkan URL dasar dengan parameter d.

Contoh:

base-url=d

Dalam contoh ini, aplikasi mendownload gambar dengan semua metadata kecuali metadata lokasi:

https://lh3.googleusercontent.com/p/Az....XabC=d

URL dasar video

Berikut adalah daftar opsi yang dapat Anda gunakan dengan URL dasar video:

Parameter
dv

Deskripsi

Untuk mengakses byte mediaItem video, gabungkan baseUrl dengan parameter dv video yang didownload.

Parameter dv meminta versi video asli yang ditranskode dan berkualitas tinggi. Parameter ini tidak kompatibel dengan parameter w dan h.

URL dasar untuk download video dapat memerlukan waktu hingga beberapa detik untuk menampilkan byte.

Sebelum menggunakan parameter ini, pastikan kolom mediaMetadata.status item media adalah READY. Jika tidak, jika item media Anda belum selesai diproses, Anda mungkin menerima error.

Contoh:

base-url=dv

Contoh berikut menunjukkan cara mendownload byte video:

https://lh3.googleusercontent.com/p/AF....BsdZ=dv
w, h, c, dan d

Deskripsi

Untuk mengakses thumbnail video, gunakan salah satu parameter URL dasar gambar.

Secara default, semua thumbnail video menyertakan overlay tombol pemutaran. Lihat parameter -no untuk menghapus overlay ini.

Contoh:

Lihat tabel URL dasar gambar untuk mengetahui contohnya.

no

Deskripsi

Hapus overlay thumbnail, parameter no.

Jika Anda ingin mengambil thumbnail video tanpa overlay tombol pemutaran, gabungkan URL dasar dengan parameter no.

Parameter no harus digunakan dengan setidaknya salah satu parameter URL dasar gambar.

Contoh:

base-url=wmax-width-hmax-height-no

Contoh berikut menampilkan thumbnail video yang lebarnya persis 1280 px dan tingginya 720 px dan tidak menyertakan overlay tombol putar:

https://lh3.googleusercontent.com/p/AF....VnnY=w1280-h720-no

URL dasar foto gerakan

Foto motion berisi elemen foto dan video. Anda dapat menggunakan parameter dari URL dasar gambar atau URL dasar video untuk permintaan baseUrl foto gerakan.

Parameter
dv

Deskripsi

Untuk mengambil elemen video dari item media foto gerakan, gunakan parameter dv seperti yang Anda lakukan untuk mendownload dari URL dasar video.

w, h, c, dan d

Deskripsi

Untuk mengambil elemen foto dari item media foto gerakan, gunakan format untuk URL dasar gambar.