Для одной задачи нужно было загружать файлы на дропбокс, и потом получать оттуда временную ссылку. Dropbox сам предоставляет удобный модуль для работы с python. В статье напишу пару примеров — как загрузить файл на дропбокс через питон.
Установка пакета dropbox python 3
Установить библиотеку можно обычным способом через pip. Пишем
1 | pip install dropbox |
Ставится последняя версия.
Как загрузить файл на dropbox в python 3
Чтобы загрузить файл, нам нужно его «прочитать побайтово» и передать на сервер. Но перед этим надо получить Access token. Об этом чуть позже. Для загрузки достаточно следующего кода:
1 2 3 4 5 6 7 | 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) # выводим результат загрузки |
Ответ, если все нормально, будет примерно таким:
1 | 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 API. Дальше выбираем какой доступ нам надо — только к одной папке (этого приложения) или полный доступ. Я выбрал App folder, достаточно. И имя нашему приложению.
Нажимаем Create App внизу, и нам выдаст страницу с настройками приложения.
Чуть ниже нажимаем Generate под Generated access token. Ждем, и сохраняем этот ключ. Он понадобится для всех запросов.
На этой же странице можно задать описание, картинку для приложения и смотреть статистику использования (все это выходит за рамки статьи).
Куда загружается файл со скрипта
Файл загружается в папку приложения, для которого получали token. У меня это:
1 | https://www.dropbox.com/home/Приложения/Bdseo%20blog |
Дальше уже можно загружать в подпапки, указывая путь в аргументе функции (например, «/for_article/myfile.png»).
Как получить ссылку для скачивания файла с dropbox в python3
Сразу хочу отметить, что ссылка временная. Выглядит она примерно вот так:
1 | https://dl.dropboxusercontent.com/apitl/1/ABjzAWNnep9dSDmNoNdiZUzQ167KU8LIPHtkxu3REUWd4FpbVLbU5BnQVDx9yMYm7vrFWmvjvJrUQCzLLQdIGzw8Yl0uxY1bizDfggOnT1uVIj6wnbC5Pr2k-RYHk69Ixj_8aMdukeBK7csCz2YMLA2uuiqWBfGCeRphi-l4bEhF5sWFnb9mngCe9TswPENxiPRsgpw7HS_G9znepULE8N8wr1F8m4pmplUWE0huXW2TzUhZ3slYlvkLYdNiEVzOMwC933VTnGlxozQ7F3bMfncr_Qg |
Сколько она живет я не замерял, пару часов, может сутки. Поэтому, перед каждым скачиванием нужно получать новую ссылку. Это делается просто, вызвав следующую функцию:
1 2 | # Выведет на экран url файла myfile.png для скачивания dbx.files_get_temporary_link('/myfile.png').link |
Больше информации и примеров в официальной документации на сайте dropbox по этой ссылке (для python).
Если есть вопросы — пишите в комментарии.
Спасибо ,ссылку лучше получать так
dbx.sharing_create_shared_link(«/dir/file.txt»)
дает прямую или на сайт?
Дает на сайт, но можно сделать прямую:
https://help.dropbox.com/ru-ru/files-folders/share/force-download
Вы о скачке, я о заливке