2013-11-26 203 views
18

編程下載內容從共享的Dropbox文件夾鏈接

我建立一個應用自動觸發下載與用戶(共享文件/文件夾的鏈接)共享一個Dropbox的文件。這是直接實現Dropbox鏈接到文件,如概述here

不幸的是,這並不爲共享文件夾的工作。任何人對我怎麼能

  • 下載了它的所有內容的建議(可能得到它裏面的文件鏈接的列表下載?)
  • 下載該文件夾的壓縮

目前,我可以去網址,並做一些屏幕抓取嘗試獲取內容列表,但鏈接的Dropbox博客條目中描述的解決方案的優點是文件是不需要刮,所以它很多更可靠和高效。

+0

標準FTP庫不工作在這種情況下,像paramiko? –

+0

這僅適用於Dropbox共享鏈接。更新了第一行以使其更清晰。 – Cian

回答

14

的Dropbox的支持團隊只是填補我在做到這一點的最好辦法:

只需添加?dl=1到共享鏈路的末端。這會給你一個壓縮版本的共享文件夾。

因此,如果與用戶共享的鏈接是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

這應該真正利用awesome Dropbox Core API,它允許你uploaddownload files,看到file deltas和信息shared folders/files信息來完成。

的API是相當簡單的,因爲它返回一個共同的URL從Dropbox的使用帳戶下載任何項目。

+1

這可以通過Core API完成嗎?問題是從發送給用戶的鏈接下載文件夾。通過Dropbox Core API執行此操作需要Oauth訪問每個將文件發送給用戶的人的帳戶? – Cian

+1

是的,它會要求每個用戶允許應用程序登錄代表他們,但是,你的應用程序會更直接地訪問一切。否則,你還沒有很好地解釋你的問題,以得到不同的答案。 – VooDooNOFX

+1

到關於從鏈接下載文件Dropbox的博客鏈接顯示的情況恰好的Dropbox的話 - 但問題是提供相同的功能的文件夾,如問題desciribed。 – Cian

0

當通過蟒蛇下載直接共享文件的鏈接我得到的HTML頁面,而不是實際的文件內容。更改?dl=1沒有幫助。然後我注意到wget正在下載實際的文件,即使在?dl=0的時候。好像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) 
相關問題