0
0

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フォトのアルバムにエンリッチメントを追加する方法
についてご紹介します。

Googleフォトのエンリッチメントとは
アルバムにいろいろな情報を紐づけることでアルバムのグルーピングが行えます。

Googleフォトのエンリッチメントは、テキスト、位置情報、地図の 3種類に対応しています。

エンリッチメント 内容 UIの場所
テキスト アルバムにアノテーションを付けるために挿入できる書式なしテキストの文字列
位置情報 場所にアノテーションを付けるために挿入できる場所の名前
地図 アルバムに挿入できる出発地と目的地を指定した地図

エンリッチメントの追加が可能なアルバムは
同じGCP認証、かつGoogle Docs API V1で作成したアルバムのみです。

アルバムの作成方法は
⧉[Google Photos Library API] JavaでGoogleフォトのアルバムを作成・更新する
を参照ください。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
を参照ください。

No 目次
1 エンリッチメントを追加
1 スコープ
2 実行
3 レスポンスの内容

1. エンリッチメントを追加

指定のアルバムにエンリッチメントを追加します。

エンリッチメントの追加が可能なアルバムは
同じGCP認証、かつGoogle Docs API V1で作成したアルバムのみです。

1.1. スコープ

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

https://www.googleapis.com/auth/photoslibrary
https://www.googleapis.com/auth/photoslibrary.appendonly
https://www.googleapis.com/auth/photoslibrary.sharing

⧉[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()){
        NewEnrichmentItem.Builder item_builder =  NewEnrichmentItem.newBuilder();
        AlbumPosition.Builder position_builder = AlbumPosition.newBuilder();

        AddEnrichmentToAlbumResponse response = client.addEnrichmentToAlbum("アルバムID",item_builder.build(),position_builder.build());
        System.out.println(response.getEnrichmentItem().getId());
    }
}

1.2.1. HTTPリクエスト

POST: https://photoslibrary.googleapis.com/v1/albums/{アルバムID}:addEnrichment
が実行されます。

1.2.2. クエリパラメータ

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

1.2.3. リクエストボディ

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

//例
//newBuilder()で各Builderクラスを取得
TextEnrichment.Builder builder = TextEnrichment.newBuilder();
//Builderクラスのsetメソッドで値を設定
builder.setText("テキスト");
//build()メソッドでインスタンスを取得
TextEnrichment text = builder.build();

//本来はシンプルにこう書きますが、何かを試すときはあえて分けて書いてます。
//TextEnrichment.newBuilder().setText("テキスト").build()

アルバムID、エンリッチメント、挿入位置の3つをリクエストボディに設定します。
全て必須です。

1.2.3.1. アルバムID

エンリッチメントを追加するアルバムIDを指定します。

1.2.3.2. エンリッチメント

追加するエンリッチメントを指定します。

NewEnrichmentItem

メソッド 引数 説明
setTextEnrichment TextEnrichment アルバムに追加するテキスト
setLocationEnrichment LocationEnrichment アルバムに追加する場所
setMapEnrichment MapEnrichment アルバムに追加する地図

TextEnrichment

メソッド 引数 説明
setText String アイテムのテキスト

LocationEnrichment

メソッド 引数 説明
setLocation Location アイテムの場所

Location

メソッド 引数 説明
setLocationName String 表示するビジネスの名前
setLatlng LatLng 地図上の場所の位置

LatLng

メソッド 引数 説明
setLatitude double 緯度(度単位)(-90.0〜90.0)
setLongitude double 経度(度単位)(-180.0〜180.0

MapEnrichment

メソッド 引数 説明
setOrigin Location アイテムの出発地
setDestination Location アイテムの目的地

1.2.3.3. 挿入位置

エンリッチメントを挿入する位置を指定します。

AlbumPosition

メソッド 引数 説明
setPosition PositionType(enum) アイテムの位置タイプ
setRelativeMediaItemId String 【setPosition(PositionType.AFTER_MEDIA_ITEM)の場合のみ必須】

位置の基準となるメディアアイテムID
setRelativeEnrichmentItemId String 【setPosition(PositionType.AFTER_ENRICHMENT_ITEM)の場合のみ必須】

位置の基準となるエンリッチメントアイテムID

PositionType

定義値 内容
POSITION_TYPE_UNSPECIFIED 設定なし
FIRST_IN_ALBUM アルバムの先頭
LAST_IN_ALBUM アルバムの最後
AFTER_MEDIA_ITEM メディアアイテムの後
AFTER_ENRICHMENT_ITEM エンリッチメントアイテムの後

1.3. レスポンスの内容

AddEnrichmentToAlbumResponse

メソッド 戻り値 説明
getEnrichmentItem EnrichmentItem 追加されたエンリッチメント

EnrichmentItem

メソッド 戻り値 説明
getId String エンリッチメントアイテムID


おしまい。。
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?