PythonでOnedriveにフォルダをアップロード[Odrive]
Python経由でOnedriveにアップロードする方法として、Microsoftが作成したOnedrive SDKの利用が考えられるが、このSDKは少し扱いにくい。そこで他の方法を探したところ、Odriveというウェブサービスを使って、アップロードができることがわかった。本記事では、Odriveをインストールし、PythonでOnedriveにフォルダをアップロードするまでを紹介する。
インストール
Linux64bitの場合はこちら
$ od="$HOME/.odrive-agent/bin" && curl -L "https://dl.odrive.com/odrive-py" --create-dirs -o "$od/odrive.py" && curl -L "https://dl.odrive.com/odriveagent-lnx-64" | tar -xvzf- -C "$od/" && curl -L "https://dl.odrive.com/odrivecli-lnx-64" | tar -xvzf- -C "$od/"
ラズパイの場合はこちら # ラズパイもサポートされているとは嬉しい。IoT機器の開発が捗りそうだ。
$ od="$HOME/.odrive-agent/bin" && curl -L "https://dl.odrive.com/odrive-py" --create-dirs -o "$od/odrive.py" && curl -L "https://dl.odrive.com/odriveagent-rpi" | tar -xvzf- -C "$od/" && curl -L "https://dl.odrive.com/odrivecli-rpi" | tar -xvzf- -C "$od/"
WindowsやMacで使う場合にもコマンドが用意されている。
インストール後、odriveをバックグラウンドで起動
$ nohup "$HOME/.odrive-agent/bin/odriveagent" > /dev/null 2>&1 &
起動後、以下のstatusコマンドを実行し、isActivated: Trueの表示があれば、インストール成功
$ "$HOME/.odrive-agent/bin/odrive" status
認証
公式の手順に従い、Authontication CodesをCLIに登録する。Authontication Codesは、上のリンクをクリックし、+Create Auth Keyをクリックし、作成する。
CLIにキーを登録するときは以下のコマンド。
$ "$HOME/.odrive-agent/bin/odrive" authenticate 00000000-0000-0000-0000-000000000000-00000000
登録に成功すると、"Hello {ユーザー名}" が表示される。
フォルダのアップロード
試しにホームディレクトリにhogeというフォルダを作って、その中にhoge.txtというファイルを作って、OneDriveのodriveというフォルダにアップロードしてみる。
引数は、odrive {local path} {remote path}になっており、{remote path}には各クラウドに応じた名前を付ける必要がある。私はOneDriveに接続したので、/OneDriveを指定した。
他にも、GoogleDriveであった場合には、/GoogleDriveとなる。さらに、{remote path}にはルート以下のフォルダを指定することも可能で、私は、OneDriveのルート直下にodriveというフォルダを作成し、/OneDrive/odriveとして指定した。このように、odriveではアップロード先を容易に指定できるという利点がある。
以下がフォルダをアップロードするコマンドになる。
$ mkdir ~/hoge $ touch ~/hoge/hoge.txt $ python ~/.odrive-agent/bin/odrive.py backup ./hoge /OneDrive/odrive
実行後、OneDriveを確認すると、hogeフォルダ以下にあるhoge.txtが確かにアップロードされていることを確認。
さらに、hoge.txtファイルを消去し、代わりにhoge2.txtを追加した後、hoge1.txtとhoge2.txtが正しくアップロードできるかを実験してみた。
$ rm ~/hoge/hoge.txt $ touch ~/hoge/hoge2.txt $ python ~/.odrive-agent/bin/odrive.py backup ./hoge /OneDrive/odrive
結果、hoge.txtとhoge2.txtの両方が無事にhogeフォルダにアップロードされていることを確認した。しかし、CLIからは以下の警告文がでた。
エラー全文 Unable to add backup folder for: /home/hoge. Unable to create backup. The backup destination already has a folder with the same name. Please pick a new backup destination or rename the folder. /home/hoge is now being backed up.
この警告文がでて良いのかどうかはわからないが、とりあえず動くことは確認できた。
odriveでは、フォルダのアップロードのだけではなく、フォルダの同期なども行うことができる、詳しく知りたいときは引数に-hを付けてあげれば、機能を参照することができる。または、公式のドキュメントを参照にするとよい。
ディスカッション
コメント一覧
まだ、コメントがありません