从 Dropbox API 下载文件以在 Python 环境中使用 Heroku 上的 Apache Tika

Downloading file from Dropbox API for use in Python Environment with Apache Tika on Heroku

我正在尝试将 Dropbox 用作 app/script 的基于云的文件容器。在 Python 中编写的脚本需要从 Dropbox 获取 PDF 并使用 tika-python 包装器转换为字符串。

我可以连接到 Dropbox API 并使用 files_download_to_file() 方法将 PDF 下载到磁盘,然后使用 tika from_file() 方法提取该下载文件从磁盘处理。示例:

# Download ex.pdf to local disk 
dbx.files_download_to_file('/my_local_path/ex_on_disk.pdf', '/my_dropbox_path/ex.pdf')

from tika import parser
parsed = parser.from_file('ex_on_disk.pdf')

问题是我正计划 运行在 Heroku 之类的软件上安装此应用程序。我认为我无法在本地保存任何内容然后再次访问它。我不确定如何从 Dropbox API 中获取可以由 tika 包装器直接引用到 运行 的内容,与上面相同。我认为 PHP SDK 有一套 file_get_contents 和一套 file_put_contents 方法,但在 Python SDK 中似乎没有配套方法。

我试过使用可共享链接代替文件名,但没有奏效。有任何想法吗?我知道还有 files_download 方法可以下载 FileMetadata 对象,但我不知道如何处理这个对象,也很难找到更多相关信息。

TLDR;如何在 Dropbox 上引用文件名字符串(例如 'example.pdf')的文件,以便在尝试从磁盘读取文件的另一个函数中使用,而不将该 Dropbox 文件保存到磁盘?

我明白了。我使用files_download方法获取字节串,然后使用tika的from_buffer方法代替:

md, response = dbx.files_download(path)
file_contents = response.content

parsed = parser.from_buffer(file_contents)