Python : Google Drive へアップロード

概要

Python から Google Drive へ画像ファイルをアップロードする。
同時に画像参照用の URL を取得。

google-api-python-client と PyDrive (google-api-python-client のラッパー) を使用。

環境

  • Debian Strech
  • Python 3.6.0
    • google-api-python-client
    • PyDrive

事前準備

OAuth クライアント ID の取得

Google APIs にアクセスし、OAuth クライアント ID とクライアントシークレットを発行する。

Google Cloud Platform
Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure ...

Google Drive API の有効化

上記のサイトで Google Drive API を有効にする。

手順は以下のサイトを参照

ゼロからはじめるPython(16) ゼロからはじめるPython 第16回 PythonからGoogleドライブを操作しよう(その1)
Pythonには多様なライブラリが用意されているので、様々な分野で活用することができる。今回は、Pythonからオンラインストレージの「Googleドライブ」を操作してみよう。PythonからGoogleドライブにアクセスできれば、任意のタ...

コード

upload_gd_image.py

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

def upload_gd_image(filename):
    FOLDER_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

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

    f = drive.CreateFile({'title': os.path.basename(filename),
                          'mimeType': 'image/png',
                          'parents': [{'kind': 'drive#fileLink', 'id': FOLDER_ID}]})

    f.SetContentFile(filename)
    f.Upload()

    url = 'http://drive.google.com/uc?export=view&id=' + f['id']
    return url

if __name__ == '__main__':
    url = upload_gd_image(sys.argv[1])
    print(url)

FOLDER_ID は保存したいフォルダのフォルダIDに書き換える。

フォルダIDはブラウザでそのフォルダを開いた URL の末尾の文字列を見れば分かる。

setting.yaml

client_config_backend: settings
client_config:
  client_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  client_secret: xxxxxxxxxxxxxxxxxxxx

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

client_id と client_secret を事前に取得した「クライアント ID」と「クライアントシークレット」に書き換える。

関数仕様

ex.
url = upload_gd_image('test.png')
  • 引数
    • filename: ファイルパス
  • 戻値
    • 画像参照用 URL

テスト

test.png をスクリプトと同じディレクトリに置いて実行。

$ python3 upload_gd_image.py test.png
`http://drive.google.com/uc?export=view&id=xxxxxxxxxxxxxxxxxxxxxxxxxxx`

コメント

タイトルとURLをコピーしました