¿Nos ayudas a pagar el Hosting?

Compartir en facebook Compartir en twitter Compartir en linkedin

Subir archivos programáticamente a Dropbox con Python

Publicado el 12 de Julio de 2016

En esta ocasión vamos a ver como subir archivos a Dropbox programáticamente con Python. Me parece una opción muy útil para no llenar nuestro sistema en caso de generar algún tipo de archivo, como lecturas de sensores en un archivo de texto para su posterior análisis, o una fotografía en un sistema de vigilancia y así, además, tener la imagen disponible remotamente y totalmente segura y aislada del sistema.

Por supuesto, para este proyecto necesitaremos tener acceso a internet, ya sea a través de WIFI o Ethernet.

Lo primero que necesitamos es una cuenta en Dropbox. Puedes crear una nueva con tus datos o acceder desde tu cuenta de Google, en nuestro caso da igual. Una vez dentro, vamos a crear una nueva app en la plataforma dropbox con el siguiente enlace: https://www.dropbox.com/developers/apps/create. Selecciona Dropbox Api en el paso 1, App folder– Access to a single folder created specifically for your app. (Acceso a una sola carpeta creada específicamente para la aplicación ) en el paso 2 y dale un nombre en el paso 3.

Pulsa sobre el botón Create APP y llegarás a una pantalla donde no necesitas cambiar nada. Lo que si necesitas es generar una llave de acceso única (Token) que será la forma de acceder a esta APP. Busca el campo Generated access token y pulsa sobre Generate.

Te dará una clave muy larga parecida a esto:

GtaiNTZiNaIgAAZZNiCoAGeUk6p5j-mjvZQ-t25FuDRr6x6h6p2w_Klvp10aNDeRr
que deberás copiar y reservar para más adelante. Ahora vamos a instalar algunos programas en la Orange Pi. Abre un terminal y actualiza como siempre:

sudo apt-get update
sudo apt-get upgrade

Necesitamos openssl, pip y el módulo de dropbox:

sudo apt-get install python-openssl
sudo easy_install pip
sudo pip install dropbox

Ya tenemos todo lo que necesitamos. Ahora crea un nuevo fichero python con tu editor preferido, que se llame, por ejemplo, subir-archivo.py y escribe este código dentro para, por ejemplo, subir una foto que acabamos de hacer con la webcam:

import dropbox
import datetime
suffix = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
nombre = "orangepi-" + suffix + ".jpg"
client = dropbox.client.DropboxClient('TuTokenDeAccesoAqui')
f = open('foto.jpg', 'rb')
respuesta = client.put_file(nombre, f)
print "Resultado:", respuesta

Lo que hace este código es lo siguiente:

  1. Importa las bibliotecas de Dropbox y de fecha y hora (lineas 1 y 2)
  2. Utiliza la fecha y hora para crear un nombre de archivo único para foto por si subimos más de una (lineas 3 y 4)
  3. Inicializa un cliente de Dropbox con nuestro token de acceso (linea 5)
  4. Abre la imagen tomada por nuestra webcam (linea 6)
  5. Guardar el archivo en Dropbox con nuestro nombre de archivo único (linea 7)
  6. Imprime la respuesta de la API dropbox (linea 8)

Asegúrate de reemplazar TuTokenDeAccesoAqui con el token de acceso que generaste previamente en el Panel de Control de Dropbox. También necesitas que la imagen a enviar foto.jpg se encuentre en el mismo directorio que el archivo Python. Si ahora ejecutas subir-archivo.py y todo ha ido bien, obtendrás una respuesta parecida a esta:

root@orangepi: python subir-archivo.py
Resultado: {u'icon': u'page_white_picture', u'bytes': 73543,
u'thumb_exists': True, u'rev': u'9315019f8', u'modified': u'Tue,
12 Jul 2016 17:23:26 W', u'clientJItime': u'True, 12 Jul 2016
17:23:26 4000', u'path': u'/orangepi-2016-07-12-17-23-25.jpg',
u'is_dir': False, u'size': u'71.8 KB', u'root': u'‘'app.folder'
, u'nillerype': u'image/jpeg', u'revision': 9}
root@orangepi:

Entra en tu cuenta de Dropbox y comprueba que la foto se ha subido. Tendrás un directorio Apps y otro con el nombre de la aplicación.

Espero que te haya sido de utilidad, no dudes en escribir un comentario si ves algún error o si puedo ayudarte.


Utiliza este espacio si quieres añadir algún comentario adicional o si tienes alguna duda.
No olvides añadir tu distribución y tu placa.

Todos los comentarios serán validados antes de su publicación.

Nombre*

Email* Nunca será publicado ni compartido

Comentario*



Copyright © 2024 desde 2016. Todos los derechos reservados | Diseño JaviPSantos

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies.

OK | Más información