💾 Archived View for yretek.com › noficcion › atomizator.gmi captured on 2022-06-11 at 20:40:34. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-01-08)

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

El atomizator

Bueno, pues aprovechando que tenía libre le he regalado un pequeño script en python a esta cápsula. Nada sofisticado, de hecho está en versión "1.0 me parece que funciona". Lo que hace es recoge la información del contenido que quiero que aparezca en mis fuentes atom¹ en un fichero de texto plano con formato csv. Tal que así


titulo|enlace|aaaa-mm-dd|hh:ss|
Diario: nuevas entradas|diario.gmi|2021-12-22|22:28
Re:Gemini en español y creación de juegos de rol|noficcion/re_gemini_espanol.gmi|2021-12-21|19:11
Re:They hate us|en/re_they_hate_us.gmi|2021-12-20|22:34
Re:Separating style from content|en/re_style_content.gmi|2021-12-18|15:45

Cada línea contiene la información correspondiente a un elemento de contenido² en cuatro campos: titulo (así, sin acentuar), enlace, aaaa-mm-dd y hh:ss. Los campos de «titulo» y «enlace» se entienden lo que son. En cuanto a aaaa-mm-dd es la fecha y hh:mm horas y minutos. El nombre está elegido para recordarme cuando lo grabe, porque y estoy es muy malo...

el script aún no tiene validaciones... 😮

 
import csv
from datetime import datetime

# Comentario: cambiar dominio, etc a tu propio dominio si 
#             quieres adaptar este escript para tus malévolos fines...

dominio = "gemini://yretek.com/"

cabeza = """<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns=\"http://www.w3.org/2005/Atom\">
<id>gemini://yretek.com/</id>
<title>Yretek.com</title>
actualizado
<link href=\"gemini://yretek.com/atom.xml\" rel=\"self\"/>
<link href=\"gemini://yretek.com/\" rel=\"alternate\"/>
<author><name>Yretek</name><email>ailolai@protonmail.com</email></author>

"""

pie = "</feed>"
fechora = datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")

salida = cabeza.replace("actualizado",f"<updated>{fechora}</updated>")

# Comentario .toAtom.csv es el archivo que vimos arriba
#            el delimitador es | porque puedo usar puntuación en el título y
#            así no tengo que preocuparme con poner comas, punto y comas...

with open('.toAtom.csv', mode='r') as rawfile:
        csvFile = csv.DictReader(rawfile,delimiter='|') 
        for i in csvFile:
            enlace = f'{dominio}{i["enlace"]}'
            identf = f'<id>{enlace}</id>\n'
            titulo = f'<title>{i["titulo"]}</title>\n'
            actlzd = f'<updated>{i["aaaa-mm-dd"]}T{i["hh:ss"]}:00Z</updated>\n'
            linktag = f'<link href="{enlace}" rel="alternate"/>\n'
            salida += f"\n<entry>\n{identf}{titulo}{actlzd}{linktag}</entry>\n"

salida = salida + "\n" + pie

with open(f'.atom{fechora}.draft', mode='w') as outputfile:
    outputfile.writelines(salida) 
# Comentario El archivo de salida es un archivo plano con un nombre
#            generado por el programa, según el momento de ejecución
#            Luego tendrías que mover el resultado a tu fichero atom
#            Por ejemplo mv .atomloquesea.draft atom.xml

Y, creo que se entiende... Si me he hecho un lío me mandas un correo, pero no me hace falta que me digas que es malo. Ya lo sé. Ya lo iré mejorando y si lo pongo es por la posibilidad de que exista alguien que esté aprendiendo y tenga la desgracia de caer en mi cápsula. O para desafiarte a que hagas uno mejor. (No será difícil). Pero a mí éste me hace el apaño.

Notas y Enlaces

¹ ¿Por qué se prefiere atom a rss en gemini? Ni idea.

² Como una entrada, fichero o... (vale, necesito una excusa para probar hacer notas al pie en gemtext)

🏠 Volver al índice

ailolai@protonmail.com