💾 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
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
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
#!/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.
url a la que añado un comentario
Aquí puedes ver cómo queda finalmente mi sección de comentarios