背景
やりたいこと
そのためには
- raspberrypi上のpythonからGoogle Keepからデータを取ってくる
- 取ってきたデータをサーマルプリンタで印刷する
- iPhoneからショートカットを使ってraspberrypiに接続してpythonを実行する
試してみた
- Pythonから直接扱うなら非公式のライブラリのgkeepapiを使うのが良さそう
- 認証情報周りが思ったよりも複雑
- master tokenを取得する必要がある
- 上記を参考にmaster tokenを取得
詰まったポイントとしては、下記の3点
- OAuth Tokenの取得方法の際に画面が遷移しないが、そのままdeveloper toolでOAuthを取得する
- Android IDはIMEIの番号を使えば良い(Pixelの設定画面から取得が出来た)
- 実行して取得出来たtokenがめちゃ長いが、よくよくparseするとtokenは200文字程度なので注意深く見ること。他にもいろいろと情報があるのでそこは捨てる
作成したコードは下記。指定したIDのノートを取得して出力する
import gkeepapi
EMAIL = "XXXXXXX@gmail.com"
MASTER_TOKEN = "aas_et/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
NOTE_ID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
keep = gkeepapi.Keep()
# 認証
keep.authenticate(EMAIL, MASTER_TOKEN)
keep.sync() # ノート同期[web:5]
# IDからノート取得
note = keep.get(NOTE_ID)
if note is None:
print("指定したIDのメモが見つかりませんでした。")
exit(1)
# 未チェックの項目だけを抽出
unchecked_items = []
for item in note.items: # チェックリストの各行にアクセス[web:32][web:96]
if not item.checked:
unchecked_items.append(item.text)
print(note.title)
for t in unchecked_items:
print("[ ]", t)
- 上記を前回作成したfree.py(引数に出力したいテキストを受け取ってサーマル側で印刷)に渡してあげる
- 下記を参照
python3 gkeep.py | python3 free.pyで問題無くサーマルプリンタから印刷が出来た!!- あとはiPhoneのショートカットで設定。これもssh+コマンドの組み合わせだけにした

今後の課題
- 買い物リストにちゃんと集約を徹底する(メモやtodoistなどにメモしない)
- 印刷した物をスマホの裏に貼り付けるなど、買い物行く前に印刷して持っていく様な導線を作る
- 非公式のライブラリなので、不意に動かなくなるリスクがあるので、そこで運用を辞めてしまわない様にする