-- Leo's gemini proxy
-- Connecting to sl1200.dystopic.world:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini;lang=es-ES
2023-01-25
Crear una sección de búsqueda por etiquetas para los artículos de mi cápsula.
Experimentar si es posible programar algo muy sencillo con chatGPT
Tras probar chatGPT en varias ocasiones me he quedado con la idea de que si eres capaz de explicar de forma precisa lo que quieres que haga, es muy probable que el resultado sea óptimo. Es más, cuando se equivoca suele ser porque la petición es incorrecta o contiene ambigüedades. Casi me atrevería a decir que las escuelas de Ingeniería Informática bien podrían hacer que el alumnado dedicara parte de su tiempo a escribir con corrección, porque me temo que la tendencia será a un empleo cada vez mayor de lenguaje natural para programar.
En mi caso la entrada con texto natural que envié a chatGPT fue exactamente esta, después cambié las rutas:
> Dado un directorio "~/test/gemini" en el que hay un directorio "art", dentro del cual hay una serie de archivos .gmi. La primera linea de esos archivos .gmi contiene el titulo, la segunda la fecha en formato AAAA-MM-DD y la tercera linea contiene un listado de hashtags, por ejemplo " #noticias #educación #mac"
> Necesito un script en bash que haga esto:
> - Leer cada archivo .gmi del directorio "art"
> - Crear dentro de una nueva carpeta "~/test/gemini/tags" un archivo .gmi para cada hashtag encontrado, noticias.gmi, educación.gmi, mac.gmi...
> - Publicar en cada línea de esos nuevos archivos de la carpeta "tags" un link a cada uno de los archivos de la carpeta "art" que contienen el hashtag correspondiente y publicar junto al link la fecha y el título. El formato de cada línea de esa publicación debe ser "=> link_al_artículo_que_contiene_el_hastag AAAA-MM-DD Título del artículo"
Con esta petición se supone que obtendría el script que crearía un archivo .gmi por etiqueta, y en cada fila de esos archivos los correspondientes links a los artículos que contienen esa etiqueta. Y así lo hizo, como si nada. Despúes sólo tuve que crear manualmente un archivo índice con links a esos archivos que crea el script, lo repasé, ajusté un par de cosillas y ya está, agregador de etiquetas hecho:
Este es el script resultante tras algunos pequeños ajustes:
#!/bin/bash rm /home/usuario/gemini/content/hashtags/* # Iterar a través de cada archivo .gmi en el directorio "art" for file in "$HOME/gemini/content/art"/*.gmi; do # Obtener el título del archivo title=$(head -n 1 "$file" | sed 's/## //') echo $title # Obtener la fecha del archivo date=$(head -n 2 "$file" | tail -n 1) echo $date # Obtener los hashtags del archivo hashtags=$( sed -n '3p' "$file" ) echo $hashtags IFS=' #' read -r -a array <<< "$hashtags" for hashtag in "${array[@]}"; do # Crear un archivo .gmi para el hashtag si no existe if [ ! -f "$HOME/gemini/content/hashtags/$hashtag.gmi" ]; then echo "" > "$HOME/gemini/content/hashtags/$hashtag.gmi" fi # Insertar línea con la ruta al artículo, la fecha y el título en el archivo del hashtag echo "=> $file $date $title" >> "$HOME/gemini/content/hashtags/$hashtag.gmi" done done # Borro las líneas duplicadas for file in $HOME/gemini/content/hashtags/*; do awk '!seen[$0]++' "$file" > "${file}_temp" && mv "${file}_temp" "$file" done # Ordeno por fecha todas las líneas de los archivos gmi creados para cada hashtag for file in $HOME/gemini/content/hashtags/*; do sort -r -k3,3 "$file" > "${file}_temp" && mv "${file}_temp" "$file" done # Borro la parte de la ruta de la raiz al directorio de contenidos de mi servidor gemini sed -i 's/\/home\/usuario\/gemini\/content//g' $HOME/gemini/content/hashtags/*
El script lo ejecuto manualmente cada vez que publico nuevos artículos. También se puede programar con cron.
-- Response ended
-- Page fetched on Fri May 17 06:25:47 2024