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

时间:2013-11-26 20:29:07

标签: python dropbox dropbox-api

我正在构建一个应用程序来自动触发与用户共享的Dropbox文件的下载(共享文件/文件夹链接)。这可以直接实现Dropbox文件链接,如here所述。

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

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

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

3 个答案:

答案 0 :(得分:20)

Dropbox的支持团队让我了解了最佳方法:

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

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

希望这也有助于其他人。

答案 1 :(得分:2)

当通过python下载直接共享链接到文件时,我得到的是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)

答案 2 :(得分:-2)

这应该通过awesome Dropbox Core API来实现,您可以使用uploaddownload files,查看有关file deltas的信息和有关shared folders/files的信息。

API非常简单,因为它返回一个公共URL,用于从Dropbox帐户下载任何项目。