アフィリエイト広告を利用しています

広告

posted by fanblog

Jetson Nano - その14: Google Photoに写真を自動アップロード

○はじめに
キャプチャした写真なんかを自動でGoogle Photoあたりに置きたいと思いまして・・。

GitHubを探してたら、 便利そうなレポジトリ があったので、使ってみることにしました。


○手順
1) Googleの認証関係のライブラリをインストール。

sudo pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib



2) GitHubからGoogle PhotoにアクセスできるPython Scriptをダウンロード。
 オリジナルのブランチは、 eshmu/gphotos-upload なのですが、いつものごとく色々手こずりました。

  • 毎回、Web経由でGoogleの認証を取らなければならない。
  • 8080のポート番号が、私の場合、他のプログラムが使っていて使えなかったので変更。


ここに記載されているサンプルコード をベースに、変更したものを ここ に置いておくので、良かったらどうぞ。


3) GoogleからGoogle PhotoのAPIの有効、OAuth 2.0 client IDの取得。
ここ に書いてある通りです。

a) OAuth 2.0 client IDの取得時は、 "デスクトップ (Desktop)"を指定。
b) 作成したら、jsonファイルでダウンロードして、client_id.jsonに必要な部分をコピペ。


4) コードの実行。
python3 upload.py --auth auth_file --album album_test test.jpg


Albumは省略可能ですが、 --Authは何でも良いので指定しておきましょう。
一回目は、必ずブラウザを開いて、パーミッションを聞かれます。
しかし二回目以降からは、--Authで指定したファイルにtoken, refresh tokenが保存されており、その情報を使われるので、聞かれることはないはずです。

問題がなければ、Google Photoに指定した写真がアップロードされていると思います。

ということで、このPythonスクリプトを定期的に呼べば、自動アップロードが可能というわけです。

参考までに。


追記: 2021.3.28
使用し続けると、一週間ぐらいで以下のようなエラーが発生し、TokenがExprieして止まることがわかりました。

google.auth.exceptions.RefreshError: ('invalid_grant: Token has been expired or revoked.'



理由は テスト版 + 外部ユーザ向けでは7日でトークンが切れるようにGoogle側で設定されているからです。

ここ に記載されていますし、海外のサイトで詳細に議論されているサイトを見つけました。

回避策としては、以下の二つですが自分用に使うのであれば 1)が現実かなと思いますが、有料です。。
1) Google Workspace利用者になって、内部ユーザに設定することで回避。
2) アプリを公開してしまう。






トラックバック

コメント

お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのコメント

×

この広告は30日以上新しい記事の更新がないブログに表示されております。

Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: