Header
2019-11-08
2019-11-25

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

2019 11 08 pic

ラズパイ(Raspberry Pi) +Python3でS3のバケットへファイルを一括アップロードするではAWSのS3へファイルをアップロードする方法を紹介しました。

今回はAPIを利用して、グーグルドライブへファイルをアップロードする方法を記載します。

参考記事

関連記事

ラズパイ(Raspberry Pi) 3 Model b+で人感センサーで監視カメラを作成する

PiPでライブラリをインストール

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

グーグルのデベロッパーコンソールにアクセス

グーグルデベロッパーコンソールへアクセスし、ログインする

ダッシュボードの作成ボタンを選択

ダッシュボード1

プロジェクト名と場所を選択

今回はプロジェクト名にPICProject と入力し 場所はデフォルトで 作成を選択

ダッシュボード2

グーグルドライブの認証情報を作成

左のメニューで認証情報を選択し、認証情報を作成を選択し、 OAuthクライアントIDを選択

ダッシュボード3

次の画面で、同意画面を設定を選択

ダッシュボード4

次の画面でアプリケーション名に任意の名称を入力し、 最下部の保存を選択

ダッシュボード5

OAuth クライアント ID の作成の画面で、その他を選択し 任意の名称を入力し 作成を選択

ダッシュボード6

表示された、クライアントIDとシークレットキーをメモ帳にコピペ

ダッシュボード7

もしくはJsonをダウンロードするとクライアントIDとシークレットキーを確認可能

ダッシュボード8

グーグルドライブAPIを有効にする

グーグルのデベロッパーコンソールのトップの検索フォームで Google Drive APIを検索

ダッシュボード9

有効にするを選択する

ダッシュボード10

アップロードするプログラムを作成

以下は拡張子mp4のファイルを一覧で取得し、グーグルドライブへアップするプログラム

#!/usr/local/bin/python3
# -*- coding: utf-8 -*-

import subprocess
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
FOLDER_ID = ' '

gauth = GoogleAuth()
gauth.CommandLineAuth()
drive = GoogleDrive(gauth)

# linuxコマンドで動画ファイルを取得
cmd = 'find /Users/smt/tst -type f -name "*.mp4"'

file_names = (subprocess.Popen(cmd, stdout=subprocess.PIPE,
                               shell=True).communicate()[0]).decode('utf-8')

# 配列化
array_files = file_names.split()

for file_name in array_files:
    file_name = file_name.split('/Users/smt/tst/')[1]
    print("ファイル名トリミング完了")
    file = drive.CreateFile({'title':  file_name,
                          'mimeType': 'video/mp4',
                          'parents': [{'kind': 'drive#fileLink', 'id':FOLDER_ID}]})
    file.SetContentFile(file_name)
    file.Upload()
    print(file_name+"のアップロード完了")

グーグルドライブのフォルダにファイルをアップロードする場合はFOLDER_IDへ、グーグルドライブの対象フォルダのfolders配下の内容を貼り付ける

ダッシュボード11

アップロード用のymlを作成する 作成したymlはプログラムと同じフォルダに設定する

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

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

以上になります

その他関連記事

AWS S3コマンドでS3のバケットにzipファイルを転送する

ラズパイへPyenvでPython3をインスールする

ラズパイへOpenCVをインストールして画像解析する

Python3でDjangoをインストールし、HellowWoldを表示する

BeautifulSoupとpython3を利用し、画像をスクレイピングしてローカルに保存する

Djangoでページを追加し表示する|初心者・独学者向け入門コンテンツ

Python3.7をインスールすると No module named '_ctypes' というエラーになる

Scrapyで相対パスを絶対パスに変更する

前の記事
次の記事
人気記事
カテゴリーから記事を探す