【Raspberry Pi】Raspberry Piで撮影した画像をGoogle Driveにアップロードさせてみる ~PyDrive編~
目次
はじめに
こんにちは、がんがんです。
以前ラズパイカメラの自動化を行いました。
gangannikki.hatenadiary.jp
カメラで撮った画像をGoogle Driveなどにアップする方法を探していたら2種類の方法に出会いました。
今回はPythonによるPyDriveを用いて実験を行ってみます。
目的
- PyDriveのインストール
- Google Driveに画像をアップロード
PyDriveのインストール
まずはPyDriveのインストールを行います。
$ pip3 install google-api-python-client $ pip3 install PyDrive
設定ファイルの作成
次にこちらを参考にしてsettings.yamlを作成します。クライアントIDとクライアントシークレットについては後ほど記述します。
settings.yaml |
client_config_backend: setting client_config: client_id: <クライアントID> client_secret: <クライアントシークレット> save_credentials: True save_credentials_backend: file save_credentials_file: credentials.json get_refresh_token: True oauth_scope: - https://www.googleapis.com/auth/drive.file - https://www.googleapis.com/auth/drive.install
クライアントIDの取得
参考記事を参照しながらクライアントIDを取得していきます。まずはGoogle Developers Consoleへアクセスします。
参考記事をみながらプロジェクトを作成していきます。
ページのデザインが変わっていますが、基本的な設定は参考記事の通りです。
OAuthクライアントのクライアントIDとクライアントシークレットを.yamlに書き込んでおくのを忘れないように注意です。
Google Drive APIを有効にしていく
以下のようなAPIライブラリでDriveの検索を行います。
Google Drive APIをクリックすると以下の画面が表示されるので有効にするボタンをクリックします。
Google Driveへアップロード
テキストファイルをアップロードしてみる
まずはテキストファイルをアップロードしてみます。コードは以下のとおりです。
初回コード実行時に認証確認URLがコマンド上に出力されるので承認しておきます。これはGASとかと同じやつです。
test.py |
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive def main(): # Google Drive gauth = GoogleAuth() gauth.CommandLineAuth() drive = GoogleDrive(gauth) # file upload f = drive.CreateFile({"title": "TEST.TXT"}) f.SetContentString("Hello Drive") f.Upload()
画像をアップロードしてみる
コードは以下の通りです。変更しているのはupload部分のみです。アップロードする画像はラズパイカメラの記事のときに撮影したヨーゼフさんの画像です。
test_img.py |
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive def main(): # Google Drive gauth = GoogleAuth() gauth.CommandLineAuth() drive = GoogleDrive(gauth) # image upload f = drive.CreateFile({"title": "test.jpg", "mimeType": "image/jpeg"}) f.SetContentFile("./test.jpg") f.Upload()
アップロードの確認
実際にGoogle Driveを見てみるときちんとアップロードされていることが分かります。
おわりに
今回はGoogle Driveとの連携としてPyDriveを試してみました。想像していたよりも簡単な印象です。
次回はもう一つのgDriveについて実験を行っていきます。
また、撮影→Google Driveへのアップロードの自動化も試してみようと思います。