前回の記事
でgoogle photo apiの認証方法をまとめた。
ここでは認証後にアルバム作成、アルバム取得、アルバムへの写真のアップロード方法のためのプログラムを書いたので以下にまとめる。
google photo apiアルバム取得
前回の記事
でgoogleインスタンスを取得しているので、
そのgoogleインスタンスのメソッドを利用する。
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)
これで標準出力にアルバムが一覧表示される。
google photo apiでアルバムの作成
アルバム作成は以下の通り、googleは認証後のgoogle instanceを指定して、nameはアルバム名を指定。
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)
Google photo apiで写真をアルバムにアップロード
写真のアップロードは以下の通り、2回APIを実行する必要がある。写真名は日本語でもいいようにutf-8でエンコードするようにした。
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)