存取應用程式建立的媒體項目

呼叫列出相片庫或相簿的內容後,應用程式應儲存媒體項目的 ID,而非儲存傳回的媒體項目。這是因為媒體項目的內容可能會變更,且在一段時間後,回應中包含的網址會過期。媒體項目 ID 可明確識別媒體項目,例如使用者媒體庫中的相片或影片。

必要的授權範圍

如要存取應用程式建立的媒體項目,您必須具備 photoslibrary.readonly.appcreateddata 範圍。如要進一步瞭解範圍,請參閱「授權範圍」。

媒體項目

mediaItem 是媒體的表示法,例如已上傳至 Google 相簿相片庫的相片或影片。這是頂層物件,其屬性可能會因底層媒體類型而異。

下表列出 mediaItem 屬性:

屬性
id 用於識別物件的永久固定 ID。
description Google 相簿中媒體項目的說明。
baseUrl 用於存取原始位元組。詳情請參閱「Base URLs」。
productUrl

連結至 Google 相簿中的圖片。開發人員無法開啟這個連結,只有使用者可以開啟。網址會指向媒體庫中的媒體項目。如果網址是從相簿搜尋中擷取,則會指向相簿中的項目。

mimeType 媒體項目的類型,可協助輕鬆識別媒體類型 (例如:image/jpg)。
filename 在 Google 相簿應用程式中向使用者顯示的媒體項目檔案名稱 (位於項目資訊部分)。
mediaMetadata 這會因媒體的基礎類型而異,例如 photovideo。如要減少酬載,可以使用欄位遮罩。

取得媒體項目

如要擷取媒體項目,請使用 mediaItemId 呼叫 mediaItems.get。這項要求會傳回單一媒體項目。

mediaItem 包含 ID、說明和網址等屬性。photovideo 中的其他資訊會根據檔案中的中繼資料。但可能不會顯示所有屬性。

如果媒體項目是影片,則必須先處理影片檔案。mediaItemmediaMetadata 中包含 status 欄位,用來說明影片檔案的處理狀態。新上傳的檔案會先傳回 videoProcessingStatus,其中的值為 PROCESSING,然後再 READY 供使用。影片必須先經過處理,才能使用影片媒體項目的 baseUrl

REST

以下是 GET 要求:

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

相片媒體項目的回應如下所示。photo 屬性包含相片項目的中繼資料。

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

影片媒體項目的回應如下所示。影片屬性包含影片項目的中繼資料。

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

取得多個媒體項目

如要依據 ID 擷取多個媒體項目,請使用 mediaItemId 呼叫 mediaItems.batchGet

要求會依照要求中提供的媒體項目 ID 順序,傳回 MediaItemResults 清單。每個結果都包含 MediaItemStatus (如果發生錯誤)。

一次呼叫中可要求的媒體項目數量上限為 50 個。媒體項目清單不得包含重複的 ID,也不能留空。

REST

以下是 GET 要求,顯示媒體項目的存取成功和失敗情況。在要求中指定每個媒體項目 ID 做為新的 mediaItemIds 查詢參數:

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 要求會傳回以下回應:

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

基礎網址

Google 相簿 API 中的基本網址可提供媒體項目的原始位元組存取權,讓應用程式下載或顯示這些項目。列出專輯 (Library API) 或存取媒體項目 (Library 和 Picker API) 時,這些網址會包含在回應中。請注意,基礎網址需要額外參數才能正常運作。

Picker API:

所有 PickedMediaItem.mediaFile 物件都包含 baseUrl

基本網址會保持有效 60 分鐘,但如果使用者透過 Google 帳戶設定撤銷應用程式的權限,則可能會提早失效。

Library API:

基礎網址會在 60 分鐘內保持有效

各種基準網址如下:

  • baseUrl:直接存取相片、影片縮圖或下載影片位元組。
  • coverPhotoBaseUrl:直接存取相簿的封面相片。
  • profilePictureBaseUrl:直接存取 mediaItem 擁有者的個人資料相片。

圖片基準網址

以下是可搭配圖片基本網址使用的選項清單:

參數
wh

說明

寬度 w 和高度 h 參數。

如要存取圖片媒體項目 (例如相片或影片縮圖),您必須指定要在應用程式中顯示的尺寸 (這樣圖片就能縮放至這些尺寸,同時保留顯示比例)。如要這麼做,請將基準網址與所需尺寸連結,如範例所示。

範例:

base-url=wmax-width-hmax-height

以下範例說明如何顯示寬度不超過 2048 像素、高度不超過 1024 像素的媒體項目:

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

說明

裁剪 c 參數。

如要將圖片裁剪為指定的確切寬度和高度,請將基準網址與選用的 -c 參數連結,並加上必要的 wh 參數。

大小 (以像素為單位) 應介於 [1, 16383] 之間。如果圖片的寬度或高度超過要求的大小,系統會縮小圖片並裁剪 (保留顯示比例)。

範例:

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

在這個範例中,應用程式會顯示寬度和高度皆為 256 像素的媒體項目,例如縮圖:

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

說明

下載,d 參數。

如果您想下載圖片,並保留位置中繼資料以外的所有 Exif 中繼資料,請將基準網址與 d 參數連結。

範例:

base-url=d

在這個範例中,應用程式會下載含有所有中繼資料的圖片,但不含位置中繼資料:

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

影片基準網址

以下是可搭配影片基本網址使用的選項清單:

參數
dv

說明

如要存取影片 mediaItem 的位元組,請將 baseUrl 與下載影片 dv 參數連結。

dv 參數會要求原始影片的高品質轉碼版本。這個參數與 wh 參數不相容。

影片下載的基本網址可能需要幾秒鐘的時間才能傳回位元組。

使用這個參數前,請確認媒體項目的 mediaMetadata.status 欄位為 READY。否則,如果媒體項目尚未完成處理,您可能會收到錯誤訊息。

範例:

base-url=dv

以下範例說明如何下載影片的位元組:

https://lh3.googleusercontent.com/p/AF....BsdZ=dv
whcd

說明

如要存取影片縮圖,請使用任何圖片基準網址參數

根據預設,所有影片縮圖都會附加播放按鈕。如要移除這項疊加層,請參閱 -no 參數。

範例:

如需範例,請參閱圖片基本網址表格

no

說明

移除縮圖覆蓋圖層,no 參數。

如果您想擷取影片縮圖,但不顯示播放按鈕的疊加圖層,請將基本網址與 no 參數連結。

no 參數必須與至少一個 圖片基本網址參數搭配使用。

範例:

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

以下範例顯示的影片縮圖寬度和高度分別為 1280 像素和 720 像素,且不含播放按鈕疊加:

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

動態相片基本網址

動態相片包含相片和影片元素。您可以使用 圖片基本網址影片基本網址中的參數,用於動態相片 baseUrl 要求。

參數
dv

說明

如要擷取動態相片媒體項目的影片元素,請使用 dv 參數,就像從影片基本網址下載一樣。

whcd

說明

如要擷取動態相片媒體項目的圖片元素,請使用圖片基礎網址的格式。