💾 Archived View for sl1200.dystopic.world › art › juntaletras_aggregator.gmi captured on 2023-12-28 at 15:12:43. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
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=