Flickrsync: Sincroniza tus fotos en flickr desde GNU/Linux

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.

El método aquí descrito ha sido realizado sobre una raspberry pi pero vale para cualquier sistema linux que soporte phyton3 e ImageMagick

Caracteristicas

  • 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:

  1. Visita la URL https://www.flickr.com/services/api/misc.api_keys.html y pulsa en Solicita tu clave en línea ahora

  2. Solicite una clave no comercial

  3. Pon un nombre a tu aplicación, por ejemplo flickrsync, acepta las condiciones y pulsa en Enviar

  4. 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

Autentificació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:
  1. Copiamos el enlace y lo pegamos en un navegador web y autorizamos a la aplicación para que pueda acceder a nuestro contenido

  2. 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
comentario powered by Disqus