💾 Archived View for sl1200.dystopic.world › art › gemini_responses_agate.gmi captured on 2024-03-21 at 15:03:35. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-01-29)

-=-=-=-=-=-=-

Publicación de respuestas a artículos en Gemini para cápsulas con servidor Agate

2023-01-05

#gemini #agate #bash

El objetivo es que las cápsulas que funcionan con servidor Agate tengan un método muy sencillo para que los visitantes puedan publicar comentarios a los artículos. Para ello me valgo de los registros que crea Agate al acceder a un documento que no existe, funcionaría así:

[AAAA-MM-DD HH:MM] [ruta/al/artículo.gmi]>>>[Texto del comentario. Autor del comentario]

Después yo puedo acceder al documento en el que se publican todos los comentarios, sabré cuando se publicaron, a qué artículo se refieren y podré responder a cada comentario.

Lo primero, debes asegurarte de que tu usuario tiene acceso a journalctl. Si no tienes los permisos necesarios deberás añadir tu usuario al grupo systemd-journal con el comando:

sudo usermod -a -G systemd-journal usuario

Este es el script en Bash para que los visitantes puedan publicar comentarios:

#!/bin/bash

# describo la función de decodificación de la url
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }

# filtramos el contenido de los registros del último minuto y eliminamos lo que pueda ser problemático
comment=$(journalctl --since "1 min ago" | grep 'gemini' | grep '\/comment\/' | cut -d "\"" -f 2 | sed 's/%22//g' | sed 's/%5C//g' | sed 's/%7C//g' | sed 's/\;//g' | sed 's/\-//g' | sed 's|gemini://sl1200.dystopic.world||g' | sed 's|/comment/| \>\>\> |g' | sed 's/\//./g' )

# decodifico el contenido filtrado
decodedcomment=$( urldecode $comment )

# si el contenido está vacio finalizo el script para que no añada filas en blanco
if [ "$decodedcomment" = "" ];
	then exit
	else
	
# inserto el contenido decodificado, junto con la fecha, en la línea 13 del documento comentarios.gmi
sed -i "13i 💬 $(date +"%Y-%m-%d %H:%M") $decodedcomment" /home/user/gemini/content/comentarios.gmi

# inserto una fila en blanco tras el comentario recién publicado
sed -i '14i\ ' /home/user/gemini/content/comentarios.gmi

# limito el número de líneas del documento a 500
sed -i '500,$d' /home/user/gemini/content/comentarios.gmi
	fi
	

Das permiso de ejecución el script y lo programas con cron para que se ejecute cada cierto tiempo, lo mejor es que se haga cada minuto para que la persona que redacte el comentario lo vea publicado al cabo de pocos segundos. Recuerda que para que cron funcione bien las rutas descritas en el script deben ser absolutas, desde /home/...

Por lo que he probado parece que se pueden redactar comentarios con todo tipo de carácteres e incluso emoticonos.

Limitaciones

Ejemplo de entrada de un comentario

url de un artículo cualquiera

url a la que añado un comentario

Aquí puedes ver cómo queda finalmente mi sección de comentarios

This work by SL1200 is licensed under CC BY 4.0

◄ BACK

🏠 Home