下载 Dropbox 文件夹中的所有 .mp4 文件

Download all .mp4 files present in a Dropbox folder

Dropbox using the API 下载文件一旦有了访问令牌就很简单了。

然后,使用方法sharing_get_shared_link_file可以简单地运行

import dropbox
dbx = dropbox.Dropbox("ACCESS_TOKEN")
#dbx.users_get_current_account()
with open("test1.mp4", "wb") as f:
    metadata, res = dbx.sharing_get_shared_link_file("https://www.dropbox.com/s/kowz06jo7i3xyv2/you_saved_me.mp4?dl=0")
    f.write(res.content)

正如您在 URL 中看到的,/s/ 意味着我们正在处理一个文件。

问题是,有时它不是一个文件而是文件所在的文件夹,因此 link 将包含 /sh/

我怎样才能一个一个地下载特定文件夹中的所有 .mp4 文件 (without .zip)?

作为参考,创建了一个包含三个 .mp4 文件的文件夹 - https://www.dropbox.com/sh/r85vzhq0xxa146s/AAASRlyR-C9ITAd0Cww0Sr9Za?dl=0

如果您共享 link 到包含文件的文件夹,而不仅仅是共享 link 到特定文件,您可以使用 files_list_folder and files_list_folder_continue to list the contents of that folder. You can do so by passing in the URL in the shared_link parameter for files_list_folder.

结果将包含有关内容的信息,例如每一个的name

然后您可以使用它来构建 path 以传递给 sharing_get_shared_link_file 以下载每个所需的文件。

根据您现有的代码和 URL:

,这看起来像这样
import dropbox

dbx = dropbox.Dropbox("ACCESS_TOKEN")

shared_link = dropbox.files.SharedLink(url="https://www.dropbox.com/sh/r85vzhq0xxa146s/AAASRlyR-C9ITAd0Cww0Sr9Za?dl=0")

listing = dbx.files_list_folder(path="", shared_link=shared_link)
# todo: add implementation for files_list_folder_continue

for entry in listing.entries:
    if entry.name.endswith(".mp4"):
        with open(entry.name, "wb") as f:
            # note: this simple implementation only works for files in the root of the folder
            metadata, res = dbx.sharing_get_shared_link_file(url=shared_link.url, path="/" + entry.name)
            f.write(res.content)