web-dev-qa-db-ja.com

python scriptからDropboxにファイルをアップロードする

ファイルをpythonスクリプトからDropboxアカウントに自動的にアップロードしたい。ユーザー/パスだけでこれを行う方法が見つからない。DropboxSDKに表示されるものはすべて関連しているユーザーとの対話を行うアプリに。私はこのようなことをしたいだけです。

https://api-content.dropbox.com/1/files_put/ /?user = me&pass = blah

44
Christina

重要な注意:現在、dropboxはv2 APIを使用しているため、この回答は非推奨です。
現在のAPIバージョンのソリューションについては @ SparkAndShine の回答をご覧ください

上記の答えをくれた@smarxに感謝します!これをしようとしている他の人のために明確にしたかっただけです。

  1. もちろん、最初にdropboxモジュールpip install dropboxをインストールしてください。

  2. 「アプリコンソール」で独自のDropboxアカウントの下にアプリを作成します。 ( https://www.dropbox.com/developers/apps

  3. 記録のために、次のようにアプリを作成しました。

    a。 「Dropbox API APP」としてのアプリタイプ。

    b。 「ファイルとデータストア」としてのデータアクセスのタイプ

    c。 「私のアプリは既にDropboxにあるファイルにアクセスする必要がある」としてのフォルダーアクセス。 (例:「フルDropbox」としてのアクセス許可の種類。)

  4. 次に、「アクセストークンを生成」ボタンをクリックし、<auth_token>の代わりに以下のpythonの例にカットアンドペーストします:



import dropbox client = dropbox.client.DropboxClient(<auth_token>) print 'linked account: ', client.account_info() f = open('working-draft.txt', 'rb') response = client.put_file('/magnum-opus.txt', f) print 'uploaded: ', response folder_metadata = client.metadata('/') print 'metadata: ', folder_metadata f, metadata = client.get_file_and_metadata('/magnum-opus.txt') out = open('magnum-opus.txt', 'wb') out.write(f.read()) out.close() print metadata
52
Christina

@ Christina の答えはDropbox APP v1 に基づいています。これは現在非推奨であり、2017年6月28日にオフになります。 (詳細については here を参照してください。)

APP v2 は2015年11月にリリースされ、よりシンプルで一貫性があり、より包括的です。

以下は、APP v2のソースコードです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dropbox

class TransferData:
    def __init__(self, access_token):
        self.access_token = access_token

    def upload_file(self, file_from, file_to):
        """upload a file to Dropbox using API v2
        """
        dbx = dropbox.Dropbox(self.access_token)

        with open(file_from, 'rb') as f:
            dbx.files_upload(f.read(), file_to)

def main():
    access_token = '******'
    transferData = TransferData(access_token)

    file_from = 'test.txt'
    file_to = '/test_dropbox/test.txt'  # The full path to upload the file to, including the file name

    # API v2
    transferData.upload_file(file_from, file_to)

if __== '__main__':
    main()

ソースコードはGitHubでホストされています here

50
SparkAndShine

API v2(およびPython 3)を使用したアプローチです。ファイルをアップロードし、そのリンクを作成してユーザーにメールで送信できました。sparkandshineの例に基づいています。注I現在のAPIドキュメントには、sparkandshineが修正した小さなエラーがあると思います。

import pathlib
import dropbox
import re

# the source file
folder = pathlib.Path(".")    # located in this folder
filename = "test.txt"         # file name
filepath = folder / filename  # path object, defining the file

# target location in Dropbox
target = "/Temp/"              # the target folder
targetfile = target + filename   # the target path and file name

# Create a dropbox object using an API v2 key
d = dropbox.Dropbox(your_api_access_token)

# open the file and upload it
with filepath.open("rb") as f:
   # upload gives you metadata about the file
   # we want to overwite any previous version of the file
   meta = d.files_upload(f.read(), targetfile, mode=dropbox.files.WriteMode("overwrite"))

# create a shared link
link = d.sharing_create_shared_link(targetfile)

# url which can be shared
url = link.url

# link which directly downloads by replacing ?dl=0 with ?dl=1
dl_url = re.sub(r"\?dl\=0", "?dl=1", url)
print (dl_url)
11
Steve Lockwood

Dropbox APIの呼び出しを認証する唯一の方法は、OAuthを使用することです。これには、ユーザーがアプリにアクセス許可を与える必要があります。サードパーティのアプリがユーザー資格情報(ユーザー名とパスワード)を処理することは許可されていません。

これが自分のアカウント専用の場合は、自分のアカウントのOAuthトークンを簡単に取得して使用できることに注意してください。 https://www.dropbox.com/ developers/blog/94/generate-an-access-token-for-your-own-account

これが他のユーザー向けである場合、OAuthトークンを取得するためにブラウザーを介してアプリを1回認証する必要があります。トークンを取得したら、引き続き使用できます。したがって、各ユーザーはこれを1回だけ行う必要があります。

6
smarx
import dropbox
access_token = '************************'
file_from = 'index.jpeg'  //local file path
file_to = '/Siva/index.jpeg'      // dropbox path
def upload_file(file_from, file_to):
    dbx = dropbox.Dropbox(access_token)
    f = open(file_from, 'rb')
    dbx.files_upload(f.read(), file_to)
upload_file(file_from,file_to)
3
user7384403

何かが足りないが、OSのDropboxアプリケーションをダウンロードしてから(Windowsで)ファイルを保存できない場合は申し訳ありません。

C:\Users\<UserName>\Dropbox\<FileName>

テキストファイルを保存するためのpythonプログラムを停止し、ドロップボックスをチェックすると、問題なく保存されます。

1
Caleb Connolly