2023-01-24
#aggregator #vps #gemini #bash #gemget #chatGPT #AI
Tener un agregador de feeds hecho por mi mismo a partir de un archivo de texto, gemget y un script en BASH.
Es muy fácil de instalar, sólo debes descargar el binario, hacerlo ejecutable y dejarlo en una carpeta incluída en el PATH.
=> Gemget, a command line downloader for the Gemini protocol
Este es el script que utilizo, no es el mejor pero al menos lo comprendo. Te agradezco cualquier comentario o sugerencia que tengas. Si quieres usarlo estúdialo antes, cambia los nombres de archivos y carpetas y adáptalo a tus necesidades, de lo contrario no funcionará.
#!/bin/bash DESCARGAS=/home/usuario/bin/suscripciones/descargas/ FEED=/home/usuario/bin/suscripciones/feedsagrupados touch $FEED # Establecer la coma como el separador de campos IFS=',' # Extraer del archivo "feeds" en el que tendo el listado de feeds a agregar las url, nombre y raiz, \ y usar un bucle para que gemget descargue los archivos índice de cada feed a agregar while read -r line; do # Leer cada línea y asignar los valores a las variables "url" y "name" url=$(echo $line | awk '{print $1}') name=$(echo $line | awk '{print $2}') raiz=$(echo $line | awk '{print $3}') #Aplicar gemget gemget -q -d $DESCARGAS $url find $DESCARGAS -type f -exec sed -i "s/ / /g" {} \; # añadir $name a todas las líneas del archivo generado en descargas find $DESCARGAS -type f -exec sed -i "s/^\([^ ]* [^ ]* [^ ]*\) /\1 $name , /" {} \; # borro => de todo el archivo find $DESCARGAS -type f -exec sed -i "s/=> //g" {} \; # añado al principio de todas las líneas la raiz find $DESCARGAS -type f -exec sed -i "s|^|=> $raiz|" {} \; # creo archivo de feeds y borro los archivos descargados cat $DESCARGAS* >> $FEED rm $DESCARGAS* done < "feeds" # elimino cualquier línea que no tenga la fecha aaaa-mm-dd, elimino también algunos caracteres sed -i '/ [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} /!d' $FEED sed -i 's/ -/ /g' $FEED sed -i 's/ : / /g' $FEED # ordeno el resultado y limito el número de líneas del archivo, lo guardo en el archivo resultado.gmi less $FEED | sort -r -k3 -t ' ' | sed '1i\### 📰 JUNTALETRAS, agregador de feeds.' | sed '300,$d' > \ /home/usuario/bin/suscripciones/resultado.gmi # añado una línea en blanco cada vez que cambia la fecha, una aportación de chatGPT 🙂 prev_date="" while read line; do current_date=$(echo $line | cut -d ' ' -f 3) if [ "$prev_date" != "$current_date" ]; then echo "" fi echo "$line" prev_date="$current_date" done < /home/usuario/bin/suscripciones/resultado.gmi > /home/usuario/gemini/content/juntaletras.gmi rm $FEED IFS=$'\ t\n'
Pues aquí hay un problema, no funciona con cron, así que deberás usar otro método. Se podría crear un servicio systemd, pero en mi caso he optado por usar el comando "nohup" para que se repita el script cada cierto tiempo, este es el comando:
nohup bash -c "while true; do /home/usuario/bin/suscripciones/script; sleep 7200; done" &
Las parte del script que agrupa las líneas por fecha añadiendo líneas en blanco es cosa de chatGPT. El nombre del agregador , "JuntaLetras" es también cosa de chatGPT.
=> This work by SL1200 is licensed under CC BY 4.0
=> ◄ BACK | 🏠 Home This content has been proxied by September (ba2dc).Proxy Information
text/gemini;lang=es-ES