呼び出し後: フォト ライブラリやアルバムのコンテンツをリストする 返されたメディア アイテムを保存する代わりに、アプリケーションで メディア アイテムの ID です。これは、メディア アイテムのコンテンツが 変更され、一定の時間が経過すると、レスポンスに含まれる URL が期限切れになります。「 メディア アイテム ID は、写真や動画などのメディア アイテムを一意に識別する ID です。 ユーザーのライブラリ内に表示されます
アプリケーションでは、ユーザーの写真や動画を長期間キャッシュに保存すべきではありません。 ユースケースによっては、ストレージまたは メディア アイテム ID を ロング 必要。 また、ユーザーのアクセス権は データはプライバシーによって管理される あります。
必要な認可スコープ
メディア アイテムにアクセスするには、アプリで次のうち少なくとも 1 つをリクエストする必要があります 認可スコープ。 レスポンスで返されるメディア アイテムへのアクセス権は、指定したスコープによって異なります。 表示されます。
photoslibrary.readonly
を使用すると、ユーザーのすべてのメディア アイテムに ライブラリphotoslibrary.readonly.appcreateddata
を許可すると、アクセスできるのは次のメディア アイテムに限られます。 アプリによって作成された
メディア項目
mediaItem
にアップロードされた写真や動画などのメディアを表します。
Google フォト ライブラリです。これは最上位のオブジェクトであり、そのプロパティは
基になるメディアタイプによって異なります
次の表に、mediaItem
のプロパティを示します。
プロパティ | |
---|---|
id |
オブジェクトの識別に使用される永続的で不変の ID。 |
description |
内側から見たメディア アイテムの説明 Google フォト |
baseUrl |
生のバイトへのアクセスに使用されます。詳細については、ベース URL をご覧ください。 |
productUrl |
Google フォト内の画像へのリンク。このリンクは使用できません 開発者が開いたもので、ユーザーだけが開けます。URL は ライブラリです。アルバム検索で取得された URL は、 アルバム内のアイテムを指します。 |
mimeType |
メディアのタイプを簡単に識別するためのメディア アイテムのタイプ
(例: image/jpg )。 |
filename |
Google フォトでユーザーに表示されるメディア アイテムのファイル名 (アイテムの情報セクション内)。 |
mediaMetadata |
メディアの基になるタイプ(photo など)によって異なる
または video 。
ペイロードを削減するために、フィールド マスクを使用できます。
|
contributorInfo |
このフィールドは、メディア アイテムが共有アルバムにある場合にのみ入力されます。
作成され、ユーザーは
このメディアを追加した投稿者に関する情報が含まれます 表示されます。詳しくは、メディアを共有するをご覧ください。 |
メディア アイテムを取得する
メディア アイテムを取得するには、呼び出します。
mediaItems.get(
mediaItemId
。このリクエストでは 1 つのメディア アイテムが返されます。
mediaItem
には、ID、説明、URL などのプロパティが含まれます。「
photo
または video
内の追加情報は、その中のメタデータに基づきます。
表示されます。すべてのプロパティが存在するとは限りません。ContributorInfo
にはメタデータが含まれています。
共有アルバム内のアイテムを検索します。このフィールドは、
メッセージの内容をリストする
ユーザーが photoslibrary.sharing
を付与した共有アルバム
認可スコープ。
メディア アイテムが動画の場合は、まず動画ファイルを処理する必要があります。「
mediaItem
には、mediaMetadata
内の 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
写真メディア アイテムに対するレスポンスは次のようになります。写真 プロパティには、写真アイテムのメタデータが含まれます。
{ "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" } }
Java
フォト プロパティには、写真アイテムのメタデータが含まれます。
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 プロパティには、動画アイテムのメタデータが含まれます。
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
フォト プロパティには、写真アイテムのメタデータが含まれます。
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 プロパティには、動画アイテムのメタデータが含まれます。
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 }
複数のメディア アイテムを取得する
複数のメディア アイテムを識別子で取得するには、呼び出します。
mediaItems.batchGet
mediaItemId
を使用します。
このリクエストにより、
MediaItemResults
リクエストで指定されたメディア アイテム ID の順序で移動します。各結果
MediaItem
が含まれている
エラーが発生した場合は Status
。
1 回の呼び出しでリクエストできるメディア アイテムの最大数は 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." } } ] }
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 }
ベース URL
Google Photos Library API 内のベース URL を使用すると、メディアのバイト数にアクセスできます。 あります。アプリはさまざまなベース URL を使用して、メディア アイテムをダウンロードまたは アプリ内でメディア アイテムを表示したりできます。ベース URL は文字列で、 アルバムの一覧を取得するとき、またはメディア アイテムにアクセスするときに返信メッセージに記載されます。内容は次のとおりです。 有効期間は 60 分で、サービス アカウントとして使用できないため、追加のパラメータが必要です。 あります
さまざまなベース URL は次のとおりです。
baseUrl
: 写真や動画のサムネイルに直接アクセスしたり、動画バイトをダウンロードしたりできます。coverPhotoBaseUrl
: アルバムのカバー写真に直接アクセスできます。profilePictureBaseUrl
: オーナーのプロフィール写真に直接アクセスするmediaItem
。
画像のベース URL
画像のベース URL で使用できるオプションは次のとおりです。
パラメータ | |
---|---|
w 、h |
説明 幅( 写真やサムネイルなど、画像のメディア アイテムにアクセスするには、 動画を作成するには、 それによって、画像を実際のサイズに合わせて アスペクト比はそのまま維持されます)。そのためには、 次のスライドに示すように、ベース URL を必要なディメンションと連結します。 説明します。 例: base-url=wmax-width-hmax-height 以下は、最大幅のメディア アイテムを表示する場合の例です。 2,048 ピクセル、高さ 1,024 ピクセル以下: https://lh3.googleusercontent.com/p/AF....VnnY=w2048-h1024 |
c |
説明 切り抜き 画像を適切な幅と高さに切り抜く場合
ベース URL を
省略可能な サイズ(ピクセル単位)は [1, 16383] の範囲内である必要があります。次のいずれかに該当する場合 画像の幅または高さがリクエストされたサイズを超えた場合、 画像が縮小および切り抜かれます(アスペクト比は維持されます)。 例: base-url=wmax-width-hmax-height-c この例では、アプリケーションで表示されるメディア アイテムに (例: 幅 256 px、高さ 256 px にする)。 サムネイル: https://lh3.googleusercontent.com/p/AF....VnnY=w256-h256-c |
d |
説明 ダウンロードの EXIF メタデータをすべて保持している画像をダウンロードする場合
ベース URL を
例: base-url=d この例では、アプリケーションは、ダウンロードしたすべての (位置情報メタデータを除く): https://lh3.googleusercontent.com/p/Az....XabC=d |
動画のベース URL
動画のベース URL で使用できるオプションは次のとおりです。
パラメータ | |
---|---|
dv |
説明 動画の dv パラメータは高品質で、 元の動画のコード変換されたバージョンです。このパラメータは、 w と h に対応 あります。 動画をダウンロードするためのベース URL は、ダウンロードされるまで数秒かかる 返すことができます。動画のダウンロードはデフォルトで H.264 エンコードされます。H.264 エンコードが失敗した場合は、VP9 が使用されます。 このパラメータを使用する前に、メディア アイテムの
例: base-url=dv 次の例は、Dataflow のバイト数を 動画: https://lh3.googleusercontent.com/p/AF....BsdZ=dv |
w 、h 、c 、
d |
説明 動画のサムネイルにアクセスするには、画像のベース URL パラメータのいずれかを使用します。 デフォルトでは、すべての動画のサムネイルに再生のオーバーレイが含まれます ] ボタンを離します。このオーバーレイを削除するには、-no パラメータを参照してください。 例: 画像のベース URL の表を参照 をご覧ください。 |
no |
説明 サムネイル オーバーレイ削除の オーバーレイのない動画のサムネイルを取得する場合 再生ボタンの場合は、ベース URL を no と パラメータを指定します。 no パラメータは、次のうち少なくとも 1 つとともに使用する必要があります。 画像のベース URL パラメータ。 例: base-url=wmax-width-hmax-height-no 次の例では、幅 1,280 px、高さ 720 px で、再生ボタンのオーバーレイを含まない動画サムネイルを表示します。 https://lh3.googleusercontent.com/p/AF....VnnY=w1280-h720-no |
モーション フォトのベース URL
モーション フォトには写真と動画の両方の要素が含まれます。次のパラメータを使用できます:
画像のベース URL
モーション フォトの baseUrl
リクエストの動画ベース URL。
パラメータ | |
---|---|
dv |
説明 モーション フォト メディア アイテムの動画要素を取得するには、次のコマンドを使用します。
動画のベース URL からダウンロードする場合と同様に |
w 、h 、c 、
d |
説明 モーション フォト メディア アイテムの写真要素を取得するには、次のコマンドを使用します。 画像のベース URL の形式。 |