ラズパイ撮影データを Google Drive へ保存

ラズパイ撮影データを Google Drive へ保存

外付けHDDに保存するのは屋内ではできるけど
外での撮影には向かない

このためクラウドにデータを保存することに

候補としては
AmazonS3
Google Drive
iCloud

S3 は使用した分課金となるので
今回は
Google Drive へ保存

料金については
【2020年10月最新版】Google ドライブの価格を徹底調査してみた!

S3の料金をシミュレーションしました

iCloud ― 料金プラン・ストレージ容量 まとめ

を参考に

ラズベリーパイZERO-WHでカメラ画像をGoogleDriveにアップロードする(python+pydrive)

を参考に設定

python3 が必要なので

sudo apt update
sudo apt upgrade
sudo apt install -y git openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev

で必要なパッケージのインストール

次に Github から pyenv を取得

git clone https://github.com/yyuu/pyenv.git ~/.pyenv

次にパスを通す

sudo nano ~/.bash_profile

でファイルを作成し開く

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

を追記して保存

設定反映のため

source ~/.bash_profile

で再読み込み

pyenv --version

でバージョン確認

今回は

pyenv 1.2.21

となった

次に
【Raspberry Pi】Raspberry Piで撮影した画像をGoogle Driveにアップロードさせてみる ~PyDrive編~

を参考に

PyDrive のインストール

pip3 install google-api-python-client
pip3 install PyDrive

次に
Google Developers Console
へアクセス

ラズパイで撮影した動画をグーグルドライブにアップロードする

を参考に
プロジェクトを作成し
Google Drive API を有効化する

APIとサービスの有効化
をクリック

Drive で検索

Google Drive API
をクリック

有効にする
をクリック

次に認証情報の作成

認証情報をクリック

認証情報を作成 > OAuth クライアントIDをクリック

参考サイトではその他だったけど
見当たらないので
アプリケーションの種類を
デスクトップアプリにして
名前は任意のものにして作成をクリック

これで
OAuth クライアントが作成される

もし忘れたとしても
OAuth クライアントIDの
編集アイコンや
ダウンロードアイコンでファイルをダウンロードすれば
確認ができる

次にGoogle Drive へのアップロード

以前、ラズパイで認証しようとしたら
失敗したので
Ubuntu で行う

sudo apt install python3-pip
pip install --upgrade pip

としたが

You are using pip version 8.1.1, however version 20.2.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

となってしまう

【Python】pip install –upgrade pip が成功しない場合の対処法

によれば
sudo をつければよいらしいが

sudo: pip: コマンドが見つかりません

となってしまうが

python3 -m pip install --upgrade pip

で成功

ラズパイと同じように環境を整えておく

pip install --upgrade google-api-python-client
pip install PyDrive


Ubuntu にも
PyDrive のインストール

を参考に
PyDrive をインストールしておく

まず認証情報を記載したファイルの作成

vim settings.yaml

内容は

client_config_backend: settings
client_config:
  client_id: <クライアントID>
  client_secret: <クライアントシークレット>

save_credentials: True
save_credentials_backend: file
save_credentials_file: credentials.json

get_refresh_token: True
  - https://www.googleapis.com/auth/drive.file
  - https://www.googleapis.com/auth/drive.install

次に

vim 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()

これで

python test.py

を実行したが認証画面がでない

Python, PyDriveでGoogle Driveのダウンロード、アップロード、削除など

を参考に

vim auth.py

でファイルを作成

import os

from pydrive.auth import GoogleAuth

os.chdir(os.path.dirname(os.path.abspath(__file__)))

gauth = GoogleAuth()
gauth.LocalWebserverAuth()

で保存し

python auth.py

とすることで認証画面の表示と認証を行うことができた

次にファイルのアップロードテスト

【Python/PyDrive】Google Driveにファイルをアップロード/ダウンロード

を参考に

vim upload.py

でファイルを作成

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

gauth = GoogleAuth()
gauth.LocalWebserverAuth()

drive = GoogleDrive(gauth)

filepath = 'test.jpg'
title = 'test.jpg'
file = drive.CreateFile({'title': title, 'mimeType': 'image/jpeg'})
file.SetContentFile(filepath)
file.Upload()

として保存

あとは
手持ちの画像ファイルを
test.jpg として保存し

python upload.py

とすると
Google Drive に test.jpg がアップロードされる

これで ubuntu でPyDrive が使えるようになったので
次にラズパイでも実験

必要なファイルを

mkdir zerodrive
cd zerodrive/
cp upload.py zerodrive/
cp settings.yaml zerodrive/
cp test.jpeg zerodrive/

でまとめて

scp /home/snowpool/zerodrive/* pi@192.168.1.8:/home/pi/

でまとめて転送

しかし、そのまま実行しても認証画面がでてしまい
エラーになる

ubuntu で認証した結果は
credentials.json
に保存されているので
これを転送

scp /home/snowpool/credentials.json   pi@192.168.1.9:/home/pi/

さらに python で実行しても
ラズパイのデフォルトは 2.7 系なので

python3 upload.py

というように実行しないとエラーになってしまう

これで画像をGoogle Drive に保存できたので
次は動画のアップロード

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です