以编程方式从共享Dropbox文件夹链接下载内容

Cia*_*ian 21 python dropbox dropbox-api

我正在构建一个应用程序来自动触发与用户共享的Dropbox文件的下载(共享文件/文件夹链接).这是直截了当地实现对Dropbox的链接文件,概述这里.

不幸的是,这对共享文件夹不起作用.任何人都有我的建议

  • 下载所有内容(可能会获取其中的文件链接列表以下载?)
  • 要么
  • 下载文件夹的zip

目前我可以访问网址并进行屏幕抓取以尝试获取内容列表,但链接的Dropbox博客条目中描述的解决方案的优势在于不需要抓取,因此它更加可靠和高效.

Cia*_*ian 20

Dropbox的支持团队只是让我了解了最好的方法:

只需添加?dl=1到共享链接的末尾即可.那将为您提供共享文件夹的压缩版本.

因此,如果与用户共享的链接https://www.dropbox.com/sh/xyz/xyz-YZ(或类似,链接到共享文件夹),下载该文件夹的压缩版本只需访问https://www.dropbox.com/sh/xyz/xyz-YZ?dl=1

希望这也有助于其他人.

  • 但似乎不适用于大于 2 GB 的文件夹 - 生成的文件已损坏。 (2认同)
  • 实际上,到目前为止,如果结果大小超过 1GB,您将收到 500 错误 (2认同)

ser*_*erg 5

当通过 python 下载文件的直接共享链接时,我得到的是 html 页面而不是实际的文件内容。改变?dl=1没有帮助。然后我注意到 wget 正在下载实际文件,即使?dl=0. 似乎 dropbox 检测到 wget 用户代理并使用文件进行响应,因此Wget/1.16 (linux-gnu)在 python中将用户代理标头设置为解决了该问题,现在正在正确下载任何 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)
Run Code Online (Sandbox Code Playgroud)