2021年03月12日
Jetson Nano - その14: Google Photoに写真を自動アップロード
○はじめに
キャプチャした写真なんかを自動でGoogle Photoあたりに置きたいと思いまして・・。
GitHubを探してたら、 便利そうなレポジトリ があったので、使ってみることにしました。
○手順
1) Googleの認証関係のライブラリをインストール。
2) GitHubからGoogle PhotoにアクセスできるPython Scriptをダウンロード。
オリジナルのブランチは、 eshmu/gphotos-upload なのですが、いつものごとく色々手こずりました。
ここに記載されているサンプルコード をベースに、変更したものを ここ に置いておくので、良かったらどうぞ。
3) GoogleからGoogle PhotoのAPIの有効、OAuth 2.0 client IDの取得。
ここ に書いてある通りです。
a) OAuth 2.0 client IDの取得時は、 "デスクトップ (Desktop)"を指定。
b) 作成したら、jsonファイルでダウンロードして、client_id.jsonに必要な部分をコピペ。
4) コードの実行。
Albumは省略可能ですが、 --Authは何でも良いので指定しておきましょう。
一回目は、必ずブラウザを開いて、パーミッションを聞かれます。
しかし二回目以降からは、--Authで指定したファイルにtoken, refresh tokenが保存されており、その情報を使われるので、聞かれることはないはずです。
問題がなければ、Google Photoに指定した写真がアップロードされていると思います。
ということで、このPythonスクリプトを定期的に呼べば、自動アップロードが可能というわけです。
参考までに。
追記: 2021.3.28
使用し続けると、一週間ぐらいで以下のようなエラーが発生し、TokenがExprieして止まることがわかりました。
理由は テスト版 + 外部ユーザ向けでは7日でトークンが切れるようにGoogle側で設定されているからです。
ここ に記載されていますし、海外のサイトで詳細に議論されているサイトを見つけました。
回避策としては、以下の二つですが自分用に使うのであれば 1)が現実かなと思いますが、有料です。。
1) Google Workspace利用者になって、内部ユーザに設定することで回避。
2) アプリを公開してしまう。
キャプチャした写真なんかを自動で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) アプリを公開してしまう。
【Jetson Nanoの最新記事】
この記事へのコメント