Cuaderno de GNUtas

Crear un RSS de nuestro sitio web (escrito en Org Mode)

Para generar un RSS de un sitio web escrito en Org (como éste), la opción orgcéntrica de ox-rss.el no acababa de funcionarme bien. El problema principal es que en este sitio cada post es un archivo html independiente, y esta solución (alambicada, tal vez, en exceso) para situaciones así tampoco es que me fuese muy fina, probablemente porque ox-rss es un paquete que se ha quedado algo desactualizado. Y, la verdad, no deseo enredarme aquí más allá de lo necesario.

Una solución alternativa, y mucho más simple, la encontré en el paquete webfeeder, que genera un RSS razonablemente limpio y que no depende de Org Mode. Su acción principal vendría a ser ésta:

(webfeeder-build
 "rss.xml"
 "/ruta/hacia/nuestra/carpeta/web"
 "https://nuestro-sitio-web"
 '("lista de las pág. web o post que queramos añadir al RSS")
 :title "Título del sitio"
 :description "sobre lo que trata el sitio"
 :builder 'webfeeder-make-rss)

Para automatizar todo, y no tener que añadir la lista de post a manopla, definí esta sencilla función:

(require 'webfeeder)

(defun rss-gnutas ()
  (interactive)
  (let
      ((ficheros (directory-files "/ruta/hacia/nuestra/carpeta/web" nil "html" nil)))
    (webfeeder-build
     "rss.xml"
     "/ruta/hacia/nuestra/carpeta/web"
     "https://maciaschain.gitlab.io/gnutas/"
     (setq ficheros (cl-remove-if (lambda (k)
                                    (string-match (regexp-opt '("acerca-de.html" "index.html" ".html~")) k))
                                  ficheros))
     :title "Cuaderno de GNUtas"
     :description "sobre GNU Emacs y otras cosas aledañas"
     :builder 'webfeeder-make-rss)
    (message "creado rss para %s" ficheros)))

Explicación:

  1. Añadimos a la variable ficheros la lista de nombres de archivo, filtrados por html, que hay en mi carpeta web y que me entrega directory-files.
  2. Introducimos esa lista en la acción webfeeder-build pero eliminando de aquélla los ficheros acerca-de.html, index.html y todos los que terminan con la tilde de los backups. Para ello nos viene de perlas la función regexp-opt, que nos busca entre varias cadenas sin tener que enredarnos con las expresiones regulares.
  3. Y, por último, un mensaje que entrega la lista de ficheros html añadidos al RSS.

En nuestra capeta web se habrá creado, por fin, un archivo rss.xml.

Publicado: 15/07/2019

Última actualización: 16/08/23


Índice general

Acerca de...

Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.

© Juan Manuel Macías
Creado con esmero en
GNU Emacs