En uno de los últimos experimentos que he estado haciendo se me planteó la necesidad de subir imágenes a una cuenta de Dropbox desde una máquina en la que no me «interesaba» montar el cliente de Dropbox (sólo quiero subir un fichero cada cierto, nada de tener más de la cuenta en ese ordenador ;))
Por fortuna, Andrea Fabrizi (grazie Andrea) tuvo la misma necesidad y nos ha regalado la forma de conectar, utilizando cUrl, contra la API de Dropbox.
Pasa, te cuento cómo hacerlo.
Preparando lo necesario
Aunque el funcionamiento está muy bien explicado por el autor, os comentaré aquellos pasos que puedan resultar algo más «truculentos» (la primera vez que se intenta).
Lo primero que tienes que hacer es descargar el script del GitHub de Andrea.
Dale permisos de ejecución al fichero descargado (botón derecho > Propiedades o un chmod a+x sobre él) y lánzalo desde la terminal.
Ejemplo de uso
La sintaxis para subir un fichero es
./dropbox_uploader.sh upload /tmp/miFichero.jpg /Public/images/claves.jpg
Donde
- upload es el comando a lanzar de los varios (delete, mkdir, list, …) que admite el script; en este ejemplo subiremos un fichero a Dropbox
- /tmp/miFichero.jpg es el fichero de mi disco duro (local) que quiero subir a Dropbox
- /Public/images/claves.jpg he optado por subirlo el fichero a la carpeta /Public/images de mi Dropbox y renombrarlo como claves.jpg
La primera vez…
…vez que lancemos el script nos pedirá que nos conectemos a una dirección web
This is the first time you run this script.
Please open this URL from your Browser, and access using your account:
Introduce en cualquier navegador la url proporcionado por el script y haz login en tu cuenta de Dropbox.
NOTA: si no has creado antes una aplicación utilizando la API de Dropbox, acepta los términos y condiciones 🙂
Crea una aplicacion introduciendo los datos que te ofrece el script; en mi caso tengo
App name: MyUploader27277479
App type: Core
Permission type: App folder or Full Dropbox
NOTA: la diferencia entre App folder y Full Dropbox es que el primero sólo permite acceder a los directorios que cuelgan de /Aplicaciones/MyUploader27277479 (directorio asignado a tu aplicación de nombre MyUploader27277479) mientras que el segundo (Full Dropbox) te da control total de cualquier directorio de tu cuenta. A mi me interesa el segundo porque necesito acceso a la carpeta Public de Dropbox desde IFTTT 🙂
En el formulario web, los datos quedan del siguiente modo.
Una vez creada, podrás añadir una descripción del programa e incluso, si lo deseas, personalizar el icono para que te resulte más fácil localizarla (si creas muchos aplicaciones para Dropbox jeje).
Realmente lo que nos interesa es
que deberemos introducirlo en el script para que pueda acceder sin problemas a Dropbox
NOTA: observa que he utilizado f para acceso Full a Dropbox que es lo que me interesa.
Como paso final y, para permitir acceso al script a nuestra cuenta de Dropbox, tendremos que volver a introducir otra url en el navegador
y darle permisos
Una vez hecho, no olvides pulsar Enter en la ventana de la terminal.
Se acabó
Prometo que todo este «jaleo» sólo se hará la primera vez que intentes subir un fichero; a partir de ese momento podrás utilizar cualquier comando contra tu cuenta de Dropbox de los que permite el script de Andrea Fabrizi sin necesidad de configurar nada «gracias» a que guardará toda la información en el fichero $HOME/.dropbox_uploader.
Con este script, un bonito cron e IFTTT consigo evitarme algún que otro quebradero de cabeza con el firewall y el SMTP de mi instituto ;).
¿Qué utilidad se te ha pasado a ti por la cabeza tras leer el artículo? Estamos deseando gozar con una «lluvia de ideas» ¡Anímate a compartir lo que estás pensando!
Muy bueno!
Molaría ver también si se puede conseguir el link público al archivo subido, para poder enviar un mail automáticamente con el link por ejemplo
Saludos!
Me gustaMe gusta
Gracias por la idea para otro post 😉
De todos modos, yo he optado por usar IFTTT.com para incluir, los archivos subidos a Dropbox, como adjuntos del email
Me gustaMe gusta
Mi problema con bash es con las carpetas. No consigo mover un archivo que contenga espacios dentro de otra carpeta. No me obedece aunque si no está dentro del script bash la orden funcione perfectamente, pero bueh…
Me gustaMe gusta
¿El archivo que contiene espacios en el nombre lo obtienes en un bucle (o similar) o lo pones directamente?
Me gustaMe gusta
Muy buena José, siempre es bueno tener alternativas de uso a los servicios «más necesarios».
Por cierto, no había visto que ya estás de nuevo más activo en tu blog, me alegra. Saludos.
Me gustaMe gusta
No te creas, no estoy tan activo como al principio 😦
Me alegra volver a verte por aquí
Salu2 amigo
Me gustaMe gusta
Y para los usuarios de windows ,, hay algo parecido ?
Me gustaMe gusta
Seguramente sí, Santiago.
Mi proyecto era para un «servidor» Linux y había implementado la funcionalidad en Bash por lo que me vino bien.
Sería cuestión de buscar algo parecido en Python; si alguien encuentra algo se le agradecerá que deje un comentario.
Suerte y un saludo
Me gustaMe gusta
bpmatec@ninefourubuntu:/home/ARIS$ sudo ./dropbox_uploader.sh upload logfiles.zip /Public/logfiles.zip
Error loading data from /home/bpmatec/.dropbox_uploader…
It is recommended to run ./dropbox_uploader.sh unlink
bpmatec@ninefourubuntu:/home/ARIS$
El unlink no funciona, que hago ahora?
Saludos,
Me gustaMe gusta
¿Qué error te da Guillermo?
Me gustaMe gusta