Google photo apiでアルバムの作成と作成したアルバムに写真をアップロードする

前回の記事
でgoogle photo apiの認証方法をまとめた。
ここでは認証後にアルバム作成、アルバム取得、アルバムへの写真のアップロード方法のためのプログラムを書いたので以下にまとめる。

google photo apiアルバム取得

前回の記事
でgoogleインスタンスを取得しているので、
そのgoogleインスタンスのメソッドを利用する。

[python]
def getallalbums(google, nexttoken=None):
data = {
“pageToken”:nexttoken
}
response = google.get(albums_url, params=data)
response_json = response.json()
for l in response_json[“albums”]:
print(l[“title”])
nexttoken = response_json.get(“nextPageToken”)
if nexttoken:
getallalbums(google, nexttoken)

[/python]

これで標準出力にアルバムが一覧表示される。

google photo apiでアルバムの作成

アルバム作成は以下の通り、googleは認証後のgoogle instanceを指定して、nameはアルバム名を指定。

[python]
def create_albums(google, name):
data = {
“album”:{
“title”: name
}
}
data = json.dumps(data)
r = google.post(albums_url, data=data)
print(r.content)
r = r.json()
albumid = r[“id”]
print(albumid)

[/python]

Google photo apiで写真をアルバムにアップロード

写真のアップロードは以下の通り、2回APIを実行する必要がある。写真名は日本語でもいいようにutf-8でエンコードするようにした。

[python]
def upload(google, album_id, image, name):
# imageはdictでimage[“name”]で写真の名前、image[“path”]写真が保存されているフルパスを想定。
headers = {
‘Authorization’: “Bearer ” + str(google.token),
‘Content-Type’: ‘application/octet-stream’,
‘X-Goog-Upload-File-Name’: image[“name”].encode(“utf-8”),
‘X-Goog-Upload-Protocol’: “raw”,
}

with open(str(image[“path”]), ‘rb’) as image_data:
# 写真のアップロード
response = google.post(upload_url, headers=headers, data=image_data)
r = response.content
data = {
‘albumId’: album_id,
“newMediaItems”:[{
“simpleMediaItem”:
{“uploadToken”:r.decode(“utf-8”)}
}
]
}
data = json.dumps(data)
# 写真の登録
google.post(media_url, data=data)
[/python]


Posted

in

,

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *