Las aristas de la migración a Pelican

/images/piedras-en-el-camino.thumbnail.jpg

Piedras en el camino

Aunque estaba muy contento por la migración del blog a Pelican, no fue todo lo fácil que hubiera deseado. Hoy, por fin, he resuelto el que espero sea el último de los problemillas de la migración. A raíz de instalar un plugin que optimiza las imágenes utilizadas en la web observé que había una imagen que siempre fallaba al optimizar lanzando un error de que la imagen no era realmente jpg y no se podía optimizar.

Lo fastidioso es que el plugin analiza y convierte todas las imágenes de una carpeta (más de 300) pero no informa de cúal es la que está fallando. Después de dar muchas vueltas con convert, grep, sed, y otras herramientas de la línea de comandos me di cuenta de que el proceso de creación de la web admitía un parámetro de verbosidad.

A todos los que han trabajado alguna vez con una herramienta de línea de comandos en linux, el parámetro -v, les será conocido. Añade más información sobre el proceso que se está realizando.

Como utilizo fabric para la publicación del blog busqué en el fichero de configuración y en la función publish añadí el parámetro -v

def publish():
    """Publish to production via rsync"""
    local('pelican -v -s publishconf.py')
    project.rsync_project(
        remote_dir=dest_path,
        exclude=".DS_Store",
        local_dir=DEPLOY_PATH.rstrip('/') + '/',
        delete=True,
        extra_opts='-c',
    )

Con solo utilizar ese parámetro adicional descubrí cual era el fichero problemático. Una búsqueda rápida en Google y el problema se aclaró un poco más. La imagen estaba codificada en formato .webp, que es un formato de Google que aparentemente permite mejores compresiones de imagen. Es el primo estático del codec webm para vídeo. Un rápido vistazo a los repositorios de Debian y a instalar el paquete webp que permite trabajar con ese tipo de imágenes.

Una vez que la imagen estaba convertida a .jpg me tocaba saber en cuál de los post la utilizaba. Ahí es donde te das cuenta de la ventaja de tener todos los posts en formato texto en un mismo directorio. Usando grep es fácil buscar si en algún post utilizaba la imagen pero aunque, efectivamente, grep la encontraba la salida estándar de grep no mostraba el nombre del fichero en cuestión.

Otro paseo por Google y descubro que puedo utilizar grep con el parámetro -l, que hace que la salida de grep sea el fichero en el que se encuentra la cadena de búsqueda así que

grep -l "image.jpg" *.md

y fichero localizado. Después de unos pocos minutos todo arreglado y el plugin de optimización de imágenes ya no se queja. Perfecto.

Así que no hay nada como un poco de tiempo libre por la mañana, google y la linea de comandos para mantener el blog en perfecto estado. Por todo lo demás estoy encantado con Pelican.

Un saludo.

Comentarios

Comments powered by Disqus