我建立一個應用自動觸發下載與用戶(共享文件/文件夾的鏈接)共享一個Dropbox的文件。這是直接實現Dropbox鏈接到文件,如概述here。
不幸的是,這並不爲共享文件夾的工作。任何人對我怎麼能
- 下載了它的所有內容的建議(可能得到它裏面的文件鏈接的列表下載?) 或
- 下載該文件夾的壓縮
目前,我可以去網址,並做一些屏幕抓取嘗試獲取內容列表,但鏈接的Dropbox博客條目中描述的解決方案的優點是文件是不需要刮,所以它很多更可靠和高效。
我建立一個應用自動觸發下載與用戶(共享文件/文件夾的鏈接)共享一個Dropbox的文件。這是直接實現Dropbox鏈接到文件,如概述here。
不幸的是,這並不爲共享文件夾的工作。任何人對我怎麼能
目前,我可以去網址,並做一些屏幕抓取嘗試獲取內容列表,但鏈接的Dropbox博客條目中描述的解決方案的優點是文件是不需要刮,所以它很多更可靠和高效。
的Dropbox的支持團隊只是填補我在做到這一點的最好辦法:
只需添加?dl=1
到共享鏈路的末端。這會給你一個壓縮版本的共享文件夾。
因此,如果與用戶共享的鏈接是https://www.dropbox.com/sh/xyz/xyz-YZ
(或類似的,可鏈接到一個共享文件夾),下載該文件夾的壓縮版本剛剛訪問https://www.dropbox.com/sh/xyz/xyz-YZ?dl=1
希望這可以幫助其他人也。
這應該真正利用awesome Dropbox Core API,它允許你upload或download files,看到file deltas和信息shared folders/files信息來完成。
的API是相當簡單的,因爲它返回一個共同的URL從Dropbox的使用帳戶下載任何項目。
這可以通過Core API完成嗎?問題是從發送給用戶的鏈接下載文件夾。通過Dropbox Core API執行此操作需要Oauth訪問每個將文件發送給用戶的人的帳戶? – Cian
是的,它會要求每個用戶允許應用程序登錄代表他們,但是,你的應用程序會更直接地訪問一切。否則,你還沒有很好地解釋你的問題,以得到不同的答案。 – VooDooNOFX
到關於從鏈接下載文件Dropbox的博客鏈接顯示的情況恰好的Dropbox的話 - 但問題是提供相同的功能的文件夾,如問題desciribed。 – Cian
當通過蟒蛇下載直接共享文件的鏈接我得到的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)
標準FTP庫不工作在這種情況下,像paramiko? –
這僅適用於Dropbox共享鏈接。更新了第一行以使其更清晰。 – Cian