2013-11-26 11 views
18

プログラムでDropbox共有フォルダからコンテンツをダウンロード

私はDropboxファイルのダウンロードを自動的に開始するアプリケーションを構築しています(共有ファイル/フォルダリンク)。これは、hereのように、Dropboxのファイルへのリンクを実装するのは簡単です。

残念ながら、これは共有フォルダでは機能しません。誰もが、私はそれのすべての内容をだ

  • ダウンロードは可能性がどのように提案してい(ダウンロードするには、多分、その中のファイルへのリンクのリストを取得する?)
  • または
  • フォルダのzipファイルをダウンロード

現在、私はURLに行ってコンテンツのリストを取得しようとするとスクリーンスクレイピングを行うことができますが、リンクされたDropboxのブログエントリで説明されているソリューションの利点は、スクレイピングが不要なことです。より信頼性が高く効率的です。

+0

標準のFTPライブラリは動作しません。この状況では、パラミコのような何か? –

+0

これは、Dropbox共有リンク専用です。最初の行が更新され、より明確になりました。 – Cian

答えて

14

のDropboxのサポートチームは、ちょうどこれを行うための最善の方法で私を記入:

をちょうど共有リンクの末尾に?dl=1を追加します。それはあなたに共有フォルダの圧縮バージョンを与えるでしょう。そのフォルダのzip形式のバージョンをダウンロードするので

ユーザーと共有リンクは(共有フォルダにリンクしている、または類似の)https://www.dropbox.com/sh/xyz/xyz-YZであれば、ただこれも他の誰かを助けhttps://www.dropbox.com/sh/xyz/xyz-YZ?dl=1

希望にアクセスします。

+1

2 GBを超えるフォルダでは機能しないようです - 結果のファイルが壊れています。 – DenNukem

+0

あなたは人生保護人です –

+1

実際には、結果としてサイズが1GBを超えると500エラーが発生します – xaphod

-1

これは本当にshared folders/filesfile deltasに関する情報とを参照してください、あなたはuploadまたはdownload filesすることを可能にする、awesome Dropbox Core APIを使用することによって行われるべきです。

APIは、Dropboxアカウントのアイテムをダウンロードする共通のURLを返すので、かなりシンプルです。

+1

これはどのようにしてCore APIを通じて行うことができますか?問題は、ユーザーに送信されたリンクからフォルダをダウンロードすることです。 Dropbox Core APIでこれを行うには、ファイルをユーザーに送信したすべてのユーザーのアカウントにOauthアクセスが必要ですか? – Cian

+1

はい、それぞれのユーザーがアプリケーションに代わってログインできるようにする必要がありますが、アプリケーションはすべてのものに直接アクセスできます。それ以外の場合は、問題を十分に説明して別の回答を得ることはできません。 – VooDooNOFX

+1

リンクからファイルをダウンロードすることに関するDropboxブログへのリンクは、Dropboxの言葉で状況を正確に示していますが、問題は、質問に記載されているように、フォルダに同じ機能を提供しています。 – Cian

0

pythonでファイルに直接共有リンクをダウンロードすると、実際のファイルコンテンツの代わりにhtmlページが表示されていました。 ?dl=1を変更しても役に立ちませんでした。私はその後、たとえ?dl=0であってもwgetが実際のファイルをダウンロードしていることに気付きました。 Dropboxのは、wgetのユーザーエージェントを検出したファイルで応答し、その問題を解決し、PythonでWget/1.16 (linux-gnu)にユーザーエージェントヘッダーを設定するように思える、リンクを共有し、今どのDropboxが正常にダウンロードされている:

headers = {'user-agent': 'Wget/1.16 (linux-gnu)'} 
r = requests.get(url, stream=True, headers=headers) 
with open(filepath, 'wb') as f: 
    for chunk in r.iter_content(chunk_size=1024): 
     if chunk: 
      f.write(chunk) 
関連する問題