【问题标题】:Python to append download link to list of files in Dropbox APIPython将下载链接附加到Dropbox API中的文件列表
【发布时间】:2022-01-25 23:33:34
【问题描述】:

我正在尝试从 Dropbox API 中提取一些图像的字典列表,并表示如下;

[{name: 'XYZ', url: 'THIS IS A URL'}]

我使用了以下生成文件名和路径列表的方法。

path = ''
files_list = []

def dropbox_list_files(path):

    dbx = dropbox_connect()

    try:
        files = dbx.files_list_folder(path).entries
        for file in files:
            if isinstance(file, dropbox.files.FileMetadata):
                metadata = {
                    'name': file.name,
                    'path_lower': file.path_lower,
                    }
                files_list.append(metadata)

但我现在坚持创建可共享链接,然后将这些链接附加到列表中的每个相关文件中。

在 Dropbox API 文档中,他们有 'sharing_create_shared_link_with_settings' 函数,看起来它可以做到这一点,但需要一个文件路径,我不确定这是否只是一个路径,或者我怎么能 A)传入依次为所有文件提供一个可迭代的路径,然后 B)为了上述目的,我如何将它们附加在一起?

非常感谢任何帮助。

【问题讨论】:

    标签: python list api dictionary dropbox


    【解决方案1】:

    填充完 files_list 后,循环遍历并将文件路径传递给sharing_create_shared_link 方法。为此,您可以在脚本中添加类似这样的内容来打印链接列表。

    for file in files_list:
        try:
            link = dbx.sharing_create_shared_link(file['path_lower'])
            print(link.url)
        except Exception as e:
            print(e)
    

    假设您使用的是 Dropbox SDK,您需要确保设置了适当的范围(例如sharing.write),否则您会遇到权限错误。

    【讨论】:

    • 谢谢泰勒。这在生成网址时起作用。两个问题 A)我将如何组合我的两个列表,以便将正确的 URL 连接到正确的字典键(“名称”)。其次,B)当前运行时间很慢(使用上述两个for循环都带有空白列表追加。有没有更有效的方法?
    • 您可以将您的代码重构为 A) 打印名称 + 共享 url 连接和 B) 在同一循环中处理链接生成以提高性能。像这样的东西..gist.github.com/tylerjhill/3ba605fc193b4d027c44862752a18355
    • 非常感谢泰勒。那完成了工作。唯一的问题是在处理大量图像时速度很慢。例如 200 需要一分钟。知道如何让这段代码更有效率吗?
    • 太棒了,很高兴这有效。从技术上讲,参考代码是有效的,但您的目标是更快地生成所有链接。您可以使用多进程模块打开多个线程以缩短脚本的执行时间。检查我分享的要点 - 更新了代码并将总时间减少了一半。
    • 太棒了。非常感谢泰勒。是的,这有很大帮助,并且将我正在处理的工作的运行时间减少了 75%!也让我学到了一些新东西。谢谢你。我昨天正在调查这个问题,看起来这是 DBX API 的“创建共享链接”功能的一个已知问题,它似乎天生就很慢:dropboxforum.com/t5/Dropbox-API-Support-Feedback/…你有 Patreon 或“给我买杯咖啡”帐户设置吗.很乐意为你的努力小费:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2015-04-16
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多