Posted in

Заливка файлов на dropbox через python

Dropbox через питон - куда сохраняются файлы
Dropbox через питон - куда сохраняются файлы

Для одной задачи нужно было загружать файлы на дропбокс, и потом получать оттуда временную ссылку. Dropbox сам предоставляет удобный модуль для работы с python. В статье напишу пару примеров – как загрузить файл на дропбокс через питон.

Установка пакета dropbox python 3

Установить библиотеку можно обычным способом через pip. Пишем

pip install dropbox

Ставится последняя версия.

Как загрузить файл на dropbox в python 3

Чтобы загрузить файл, нам нужно его “прочитать побайтово” и передать на сервер. Но перед этим надо получить Access token. Об этом чуть позже. Для загрузки достаточно следующего кода:

import dropbox

dbx = dropbox.Dropbox('0L9___6b') # наш access token

with open('d:/myfile.png','rb') as file: # открываем файл в режиме чтение побайтово
    response = dbx.files_upload(file.read(),'/myfile.png') # загружаем файл: первый аргумент (file.read()) - какой файл; второй - название, которое будет присвоено файлу уже на дропбоксе.
    print(response) # выводим результат загрузки

Ответ, если все нормально, будет примерно таким:

FileMetadata(name='myfile.png', id='id:N1vtTR2yQKAAAAAAAAAANw', client_modified=datetime.datetime(2019, 4, 20, 19, 32, 42), server_modified=datetime.datetime(2019, 4, 20, 19, 32, 43), rev='013000000014003fd40', size=215910, path_lower='/myfile.png', path_display='/myfile.png', parent_shared_folder_id=None, media_info=None, symlink_info=None, sharing_info=None, property_groups=None, has_explicit_shared_members=None, content_hash='a6dc4aab14039d2a733846bb8bbd87907534829fcfdbbbe3188d8')

Как получить Access token для работы с api dropbox

Чтобы получить Access token заходим на эту страницу – App Console Dropbox. Логинимся или регистрируемся если нужно. Нажимаем на Create app.

Как создать приложение в dropbox. Скрипт python 3
Как создать приложение в dropbox

Выбираем первый вариант – Dropbox API. Дальше выбираем какой доступ нам надо – только к одной папке (этого приложения) или полный доступ. Я выбрал App folder, достаточно. И имя нашему приложению.

Create app dropbox
Создание приложения dropbox. Заливка своих файлов через питон

Нажимаем Create App внизу, и нам выдаст страницу с настройками приложения.

Dropbox - приложение создано. Берем Access token для заливки файлов в python
Dropbox – приложение создано. Берем Access token для заливки файлов в python

Чуть ниже нажимаем Generate под Generated access token. Ждем, и сохраняем этот ключ. Он понадобится для всех запросов.

Получить token в dropbox
Получить token в dropbox

На этой же странице можно задать описание, картинку для приложения и смотреть статистику использования (все это выходит за рамки статьи).

Куда загружается файл со скрипта

Файл загружается в папку приложения, для которого получали token. У меня это:

https://www.dropbox.com/home/Приложения/Bdseo%20blog

Дальше уже можно загружать в подпапки, указывая путь в аргументе функции (например, “/for_article/myfile.png”).

Dropbox через питон - куда сохраняются файлы
Dropbox через питон – куда сохраняются файлы

Как получить ссылку для скачивания файла с dropbox в python3

Сразу хочу отметить, что ссылка временная. Выглядит она примерно вот так:

https://dl.dropboxusercontent.com/apitl/1/ABjzAWNnep9dSDmNoNdiZUzQ167KU8LIPHtkxu3REUWd4FpbVLbU5BnQVDx9yMYm7vrFWmvjvJrUQCzLLQdIGzw8Yl0uxY1bizDfggOnT1uVIj6wnbC5Pr2k-RYHk69Ixj_8aMdukeBK7csCz2YMLA2uuiqWBfGCeRphi-l4bEhF5sWFnb9mngCe9TswPENxiPRsgpw7HS_G9znepULE8N8wr1F8m4pmplUWE0huXW2TzUhZ3slYlvkLYdNiEVzOMwC933VTnGlxozQ7F3bMfncr_Qg

Сколько она живет я не замерял, пару часов, может сутки. Поэтому, перед каждым скачиванием нужно получать новую ссылку. Это делается просто, вызвав следующую функцию:

# Выведет на экран url файла myfile.png для скачивания
dbx.files_get_temporary_link('/myfile.png').link

Больше информации и примеров в официальной документации на сайте dropbox по этой ссылке (для python).

Если есть вопросы – пишите в комментарии.

4 thoughts on “Заливка файлов на dropbox через python

  1. Спасибо ,ссылку лучше получать так
    dbx.sharing_create_shared_link(“/dir/file.txt”)

Leave a Reply

Your email address will not be published. Required fields are marked *