Загрузка файла из Dropbox API для использования в среде Python с Apache Tika на Heroku - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь использовать Dropbox в качестве облачного хранилища файлов для приложения / скрипта. Сценарий, написанный на Python, должен взять PDF-файлы из Dropbox и использовать оболочку tika-python для преобразования в строку.

Я могу подключиться к API Dropbox и использовать метод 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. Я не думаю, что смогу сохранить что-либо локально, а затем снова получить к нему доступ. Я не уверен, как получить что-то из API Dropbox, на которое может напрямую ссылаться оболочка tika, чтобы выполнить то же, что и выше. Я думаю, что в PHP SDK есть набор методов file_get_contents и file_put_contents, но в Python SDK, похоже, его нет.

Я пытался использовать разделяемые ссылки вместо имени файла, но это не сработало. Есть идеи? Я знаю, что есть также метод files_download, который загружает объект FileMetadata, но я понятия не имею, что с этим делать, и мне трудно найти больше об этом.

TLDR; Как я могу сослаться на файл в Dropbox со строкой имени файла, такой как 'example.pdf', чтобы использовать ее в другой функции, которая пытается прочитать файл с диска, не сохраняя этот файл Dropbox на диск?

1 Ответ

0 голосов
/ 14 мая 2018

Я понял это.Я использовал метод files_download, чтобы получить байтовую строку, а затем вместо этого использовал метод from_buffer tika:

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

parsed = parser.from_buffer(file_contents)
...