0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Google Photos Library API] JavaでGoogleフォトのメディアアイテム(写真や動画)を検索する

Posted at

Google Photos Library APIを使用して、
Googleフォトのメディアアイテム(写真や動画)を検索する方法
についてご紹介します。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う
を参照ください。

No 目次
1 メディアアイテムを検索
1 スコープ
2 実行
3 レスポンスの内容

1. メディアアイテムを検索

メディアアイテム(写真や動画)の検索します。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

https://www.googleapis.com/auth/photoslibrary
https://www.googleapis.com/auth/photoslibrary.readonly
https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata

⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う(2.2. PhotosLibraryClientインスタンスを取得)
でスコープを指定してください。

1.2. 実行

public static void main(String[] args) throws Exception{
    try(PhotosLibraryClient client = getPhotosLibraryClient()){
        SearchMediaItemsRequest.Builder builder = SearchMediaItemsRequest.newBuilder();
        builder.setAlbumId("アルバムID");

        SearchMediaItemsPagedResponse response = client.searchMediaItems(builder.build());
        
        for (MediaItem item : response.iterateAll()) {
            System.out.println(item);
        }
    }
}

1.2.1. HTTPリクエスト

POST: https://photoslibrary.googleapis.com/v1/mediaItems:search
が実行されます。

1.2.2. クエリパラメータ

クエリパラメータはありません。

1.2.3. リクエストボディ

引数で渡す各インスタンス(com.google.photos.library.v1.protoパッケージ)は
各クラスのstaticで用意されているnewBuilder()でBuilderクラスを取得します。
Builderクラスに対してsetメソッドで値を設定し、build()でインスタンスを取得します。

//例
//newBuilder()で各Builderクラスを取得
Filters.Builder builder = Filters.newBuilder();
//Builderクラスのsetメソッドで値を設定
builder.setIncludeArchivedMedia(false);
//build()メソッドでインスタンスを取得
Filters filters = builder.build();

//本来はシンプルにこう書きますが、何かを試すときはあえて分けて書いてます。
//Filters.newBuilder().setIncludeArchivedMedia(true).build()

SearchMediaItemsRequest

SearchMediaItemsRequest.Builderのsetメソッドにより、
リクエストボディを追加できます。

build()メソッドでSearchMediaItemsRequestインスタンスを取得し、
searchMediaItems()に渡します。

メソッド 引数 説明
setAlbumId String アルバムID
setFilters()と同時に設定することは不可
setPageSize Integer レスポンスで返すメディアイアテムの最大数
デフォルトは25、最大は100
setPageToken String 結果の次のページを取得するための連続トークン
setFilters Filters リクエストに適用するフィルタ
setAlbumId()と同時に設定することは不可
setOrderBy String 結果の並べ替え
setFilters()でsetDateFilter()を設定している場合のみ有効

"MediaMetadata.creation_time"(作成日が古い順)
"MediaMetadata.creation_time desc"(作成日が新しい順)

Filters

メソッド 引数 説明
setDateFilter DateFilter 作成日フィルタ
setContentFilter ContentFilter コンテンツフィルタ
setMediaTypeFilter MediaTypeFilter メディアタイプフィルタ
setFeatureFilter FeatureFilter 機能フィルタ
setIncludeArchivedMedia Boolean ユーザーがアーカイブしたメディアアイテムか
setExcludeNonAppCreatedData Boolean このAPI以外で設定したメディアアイテムか

DateFilter

メソッド 引数 説明
addDates Date 作成日と一致する日付のリスト
最大5つ
addRanges DateRange 作成日と一致する期間のリスト
最大5つ

ContentFilter

メソッド 引数 説明
addIncludedContentCategories ContentCategory(enum) 結果に含めるカテゴリセット
最大10つ
addExcludedContentCategories ContentCategory(enum) 結果に含めないカテゴリセット
最大10つ

MediaTypeFilter

メソッド 引数 説明
addMediaTypes MediaType(enum) アイテムタイプ
最大1つ

FeatureFilter

メソッド 引数 説明
addIncludedFeatures Feature(enum) 機能セット

DateRange

メソッド 引数 説明
setStartDate Date 開始日(期間の一部として含める)
setEndDate Date 終了日(期間の一部に含まれます)

ContentCategory

定義値 内容
NONE デフォルトのコンテンツカテゴリ
LANDSCAPES 風景を含むメディアアイテム
RECEIPTS 領収書を含むメディアアイテム
CITYSCAPES 都市景観を含むメディアアイテム
LANDMARKS ランドマークを含むメディアアイテム
SELFIES 自撮り写真のメディアアイテム
PEOPLE 人物を含むメディアアイテム
PETS ペットを含むメディアアイテム
WEDDINGS 結婚式のメディアアイテム
BIRTHDAYS 誕生日のメディアアイテム
DOCUMENTS ドキュメントを含むメディアアイテム
TRAVEL 旅行中に撮影されたメディアアイテム
ANIMALS 動物を含むメディアアイテム
FOOD 食品を含むメディアアイテム
SPORT スポーツ
NIGHT 夜間に撮影されたメディアアイテム
PERFORMANCES 公演のメディアアイテム
WHITEBOARDS ホワイトボードを含むメディアアイテム
SCREENSHOTS スクリーンショットのメディアアイテム
UTILITY 有用とみなされるメディアアイテム
ARTS アートを含むメディアアイテム
CRAFTS 工芸を含むメディアアイテム
FASHION ファッションに関連するメディアアイテム
HOUSES 家を含むメディアアイテム
GARDENS 庭園を含むメディアアイテム
FLOWERS 花を含むメディアアイテム
HOLIDAYS 休日に撮影されたメディアアイテム

MediaType

定義値 内容
ALL_MEDIA すべてのメディアタイプ
VIDEO 動画
PHOTO 写真

Feature

定義値 内容
NONE すべての機能
FAVORITES Googleフォトでお気に入りとしてマーク

1.3. レスポンスの内容

SearchMediaItemsPagedResponse

メソッド 戻り値 説明
iterateAll Iterable<MediaItem> メディアアイテムのリスト
getNextPageToken String メディアアイテムの次のセットを取得するためのトークン

MediaItem

メソッド 戻り値 説明
getId String メディアアイテムID
getDescription String メディアアイテムの説明
getProductUrl String メディアアイテムの GoogleフォトURL
getBaseUrl String メディアアイテムのバイトへのURL
getMimeType String メディアアイテムのMIMEタイプ
getMediaMetadata MediaMetadata メディアアイテムに関連するメタデータ
getContributorInfo ContributorInfo メディアアイテムを追加したユーザーの情報
getFilename String メディアアイテムのファイル名

MediaMetadata

メソッド 戻り値 説明
getCreationTime Timestamp メディアアイテムが最初に作成された時刻
getWidth Long メディアアイテムの元の幅(ピクセル単位)
getHeight Long メディアアイテムの元の高さ(ピクセル単位)
getPhoto Photo 写真のメディアタイプのメタデータ
getVideo Video 動画のメディアタイプのメタデータ

Photo

メソッド 戻り値 説明
getCameraMake String 写真を撮影したカメラのブランド
getCameraModel String 写真を撮影したカメラのモデル
getFocalLength Float 写真を撮影したカメラのレンズの焦点距離
getApertureFNumber Float 写真を撮影したカメラレンズの絞りのf値
getIsoEquivalent Integer 写真を撮影したカメラのISO
getExposureTime Duration 写真が撮影されたときのカメラの絞りの露出時間

Video

メソッド 戻り値 説明
getCameraMake String 動画を撮影したカメラのブランド
getCameraModel String 動画を撮影したカメラのモデル
getFps Double 動画のフレームレート
getStatus VideoProcessingStatus(enum) 動画の処理ステータス

ContributorInfo

メソッド 戻り値 説明
getProfilePictureBaseUrl String 投稿者のプロフィール写真のURL
getDisplayName String 表示名

VideoProcessingStatus

定義値 内容
UNSPECIFIED 動画の処理ステータスが不明
PROCESSING 動画の処理中
READY 動画の処理が完了し、表示できるようになった
FAILED エラーが発生したため、動画を処理できなかった


おしまい。。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?