Подтвердить что ты не робот

Программно загружать контент из общих папок Dropbox

Я создаю приложение для автоматического запуска загрузки файла Dropbox, совместно используемого с пользователем (общая ссылка на файл/папку). Это было прямо для реализации ссылок Dropbox на файлы, как описано здесь.

К сожалению, это не работает для общих папок. У кого-нибудь есть предложения о том, как я могу

  • Загрузите все содержимое (возможно, получите список файлов в нем для загрузки?) <Я > илия >
  • Загрузите почтовый индекс папки

В настоящее время я могу перейти к URL-адресу и выполнить скриншоты экрана, чтобы попытаться получить список содержимого, но преимущество решения, описанного в связанной записи блога Dropbox для файлов, заключается в том, что никаких соскабливаний не требуется, поэтому это намного больше надежным и эффективным.

4b9b3361

Ответ 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.