ラズパイ撮影データを Google Drive へ保存
外付けHDDに保存するのは屋内ではできるけど
外での撮影には向かない
このためクラウドにデータを保存することに
候補としては
AmazonS3
Google Drive
iCloud
S3 は使用した分課金となるので
今回は
Google Drive へ保存
料金については
【2020年10月最新版】Google ドライブの価格を徹底調査してみた!
を参考に
ラズベリーパイ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 に保存できたので
次は動画のアップロード