Программно загружать контент из общих папок Dropbox
Я создаю приложение для автоматического запуска загрузки файла Dropbox, совместно используемого с пользователем (общая ссылка на файл/папку). Это было прямо для реализации ссылок Dropbox на файлы, как описано здесь.
К сожалению, это не работает для общих папок. У кого-нибудь есть предложения о том, как я могу
- Загрузите все содержимое (возможно, получите список файлов в нем для загрузки?)
<Я > илия >
- Загрузите почтовый индекс папки
В настоящее время я могу перейти к URL-адресу и выполнить скриншоты экрана, чтобы попытаться получить список содержимого, но преимущество решения, описанного в связанной записи блога Dropbox для файлов, заключается в том, что никаких соскабливаний не требуется, поэтому это намного больше надежным и эффективным.
Ответы
Ответ 1
Команда поддержки Dropbox просто наполнила меня наилучшим способом:
Просто добавьте ?dl=1
в конец общей ссылки. Это даст вам zipped версию общей папки.
Итак, если ссылка, совместно используемая с пользователем, https://www.dropbox.com/sh/xyz/xyz-YZ
(или аналогичная, которая связана с общей папкой), для загрузки зашифрованной версии этой папки можно получить доступ только к https://www.dropbox.com/sh/xyz/xyz-YZ?dl=1
Надеюсь, это поможет и другому.
Ответ 2
При загрузке прямых общих ссылок на файлы через python я получал html-страницы вместо фактического содержимого файла. Изменение ?dl=1
не помогло. Затем я заметил, что wget загружал фактический файл, даже когда ?dl=0
. Похоже, что dropbox обнаруживает пользовательский агент wget и отвечает на этот файл, поэтому настройка заголовка пользовательского агента на Wget/1.16 (linux-gnu)
в python решила проблему, теперь загружается любая доступная ссылка на 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)
Ответ 3
Это действительно должно быть сделано с помощью удивительного API Dropbox Core, который позволяет upload или скачать файлы, см. информацию дельта файлов и информацию о общих папках/файлах.
API довольно прост, так как он возвращает общий URL-адрес для загрузки любого элемента из учетных записей Dropbox.