Flickrsync: Sincroniza tus fotos en flickr desde GNU/Linux
2018-04-02
Índice
Aunque utilizo mi propia nube privada con Nextcloud y mi raspberry pi para mantener sincronizados mis datos (documentos, fotografías,videos, agenda, etc) y mantengo una copia sincronizada de esos datos en un ordenador portátil, una serie de hechos recientes me han hecho plantearme la necesidad de mantener otra copia de esos datos en un almacenamiento en la nube, externo a mi hogar.
Estos días he estado probando y valorando varias opciones para el almacenamiento de mis fotografías eligiendo al final flickr (ofrece 1 TB de almacenamiento de forma gratuita y sin perdida de calidad), una vez elegido el sitio, quedaba ver como subir todo el material, cerca de 20 GB.
Existen programas como digikam, que junto a kipi-plugins permite subir fotografías a diversos servicios como google photos y flickr, pero la idea es automatizar todo el proceso desde la raspberry, y que aparte de subir las fotografías tambión cree los álbums, y si posteriormente voy añadiendo nuevo contenido, que tambión, de forma automática, se suba a flickr por lo que me puse a buscar por GitHub algún script que me permitiese hacer todo eso.
Encontró Flickrsync escrito en pyhton, que nos permite subir, descargar o sincronizar nuestras fotografías entre nuestro sistema de ficheros local y flickr, creando de forma automática los álbunes respetando la estructura que tienen en nuestro sistema de archivos local.
Características
-
Se identifican copias duplicadas de la misma imagen en el sistema de archivos local.
-
Se utiliza la firma de hash de la imagen, solo se cargará una sola copia de la imagen
-
No se basa en el nombre de ruta local para identificar la imagen.
-
mover una imagen a un directorio diferente no hará que la imagen se cargue de nuevo
-
Utiliza una base de datos SQLite para indexar imágenes locales y de Flickr.
-
Destruir la base de datos no dará lugar a que se carguen más imágenes, la base de datos se regenera automáticamente
-
Sincronización bidireccional entre el sistema de archivos local y Flickr.
-
Multihilo.
-
FlickrSync NO necesita sudo para funcionar.
-
Las imágenes no se eliminarán ni en el sistema de archivos local ni en Flickr.
Instalación
sudo apt install python3-pip
sudo apt install libmagickwand-dev
sudo pip3 install flickrsync
Configuración
Copiamos la plantilla de configuración a nuestro $HOME, la plantilla se puede encontrar en algún lugar de la biblioteca de Python ../flickrsync/etc/config.ini
en mi caso /usr/local/lib/python3.5/dist-packages/flickrsync/etc/config.ini
cp /usr/local/lib/python3.5/dist-packages/flickrsync/etc/config.ini $HOME
Añadimos el nombre de usuario de Flickr, claves de API y API secreta, lugar donde se encuentra el directorio de imágenes y el lugar donde almacenaremos la base de datos del indexado de las imágenes
Para obtener las claves API:
- Visita la URL
https://www.flickr.com/services/api/misc.api_keys.html y pulsa en Solicita tu clave en línea ahora
- Solicite una clave no comercial
- Pon un nombre a tu aplicación, por ejemplo flickrsync, acepta las condiciones y pulsa en Enviar
- Ya podemos ver las claves API de nuestra aplicación y ponerlas en nuestro fichero
[DEFAULT]
api_key = 8f60Y78fsdxxxxxxxxxxxxxx47
api_secret = 2xxxxxxxxx9
username = tu_usuario
directory = /media/Nas01/Imágenes/Fotos/
database = ~/.flickrsync/flickrsync.db
Tambión se habrá creado un nuevo fichero en $HOME/.flickr/oauth-tokens.sqlite con el token de autorización de la aplicación, tenlo en cuenta a la hora de realizar el backup de tu sistema.
carlos@raspberrypi:~ $ ls -l .flickr/oauth-tokens.sqlite
-rw-r--r-- 1 carlos carlos 16384 abr 1 17:22 .flickr/oauth-tokens.sqlite
Autenticación en flickr
Necesitamos autenticar la aplicación FlickrSync con Flickr, para ello ejecutamos:
carlos@raspberrypi:~ $ flickrsync auth
Open a browser at the authentication URL:
https://www.flickr.com/services/oauth/authorize?oauth_token=7215769xxxxxxx285-11dxxxxxxxx&perms=write
Enter the Flickr Verifier code:
- Copiamos el enlace y lo pegamos en un navegador web y autorizamos a la aplicación para que pueda acceder a nuestro contenido
- Nos lleva a una nueva página donde se nos facilita un código de autorización que debemos de copiar y pegar en la terminal
carlos@raspberrypi:~ $ flickrsync auth
Open a browser at the authentication URL:
https://www.flickr.com/services/oauth/authorize?oauth_token=7215769xxxxxxx285-11dxxxxxxxx&perms=write
Enter the Flickr Verifier code: XXX-XXX-418
authenticated id<6XXXXX2@N00>
authenticated id<hefistion>
finished
carlos@raspberrypi:~ $
Ya tenemos autorizada nuestra aplicación lista para poder empezar a trabajar.
Uso
Para ver una lista completa de comandos
flickrsync --help
Para autenticar FlickrSync con Flickr
flickrsync auth
Para realizar una sincronización en un sentido, desde el sistema de archivos local a Flickr
flickrsync sync
Para realizar una sincronización bidireccional entre el sistema de archivos local y Flickr
flickrsync sync2
Para crear álbunes en Flickr basados en el sistema de archivos local
flickrsync photosets
Automatización
Para que las fotografías se suban de forma automática a flickr basta con utilizar cron y programarlo con la frecuencia deseada, primero sincronizamos las fotos y luego las añadimos a los álbunes correspondientes.
Utilizaremos el parametro –noprompt para asignar yes como respuesta predeterminada y no utilizar el prompt, redirigimos la salida a un fichero de log para controlar los errores.
0 4 * * * /usr/local/bin/flickrsync --noprompt sync2 >> /home/carlos/flickrsync.log
0 8 * * * /usr/local/bin/flickrsync --noprompt photosets >> /home/carlos/flickrsync.log