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

View Raw

More Information

⬅️ Previous capture (2022-01-08)

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

Atomizator 2: El regreso

Esta es la versión 2.0 de mi atomizator; mi script para generar feeds atom con algunas mejora. Dos en concreto: 1 que genera las fechas automáticamente de las entradas que he marcado como tal con el código «generar» y 2 que crea un nuevo fichero csv que sirva de borrador para la siguiente vez.

Para ello he cambiado el ficher csv que ahora va de la siguiente forma y manera:


titulo|enlace|fechora|
Diario: nuevas entradas|diario.gmi|generar
[EN] The Silver War Gamebook rules: first rough draft|en/gbrules.gmi|2021-12-25T12:16:23Z
[EN] Announcing Yretek's first proyect: The Silver War|en/silver_war_p01.gmi|2021-12-24T17:32Z
El atomizator: mi script para generar entradas atom|noficcion/atomizator.gmi|2021-12-23T16:35Z
Re:Gemini en español y creación de juegos de rol|noficcion/re_gemini_espanol.gmi|2021-12-21T19:11Z
Re:They hate us|en/re_they_hate_us.gmi|2021-12-20T22:34Z
Re:Separating style from content|en/re_style_content.gmi|2021-12-18T15:45Z

A diferencia de la vez anterior ahora solo tenemos tres campos: titulo (sin acento que no me la quiero jugar), enlace y «fechora» (la fecha y hora en el formato que le gusta a atom). Verás que la primera línea tiene «generar» en el campo «fechora» y eso lo usará el script para saber que éste lo tiene que generar. Podría haber varios líneas con el código «generar», como por ejemplo si me da por subir varias entradas a la vez.

# ------------------------------ #
# -        Atomizator          - #
# - por Yretek para Yretek.com - #
# -------------------------------#

import csv
from datetime import datetime

dominio = "gemini://yretek.com/" 
# Si cometes el error de usar esta cosa, 
# cámbialo por tu nombre de dominio
titulo = "Yretek"
# Idém del anterior
cabeza = f"""<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns=\"http://www.w3.org/2005/Atom\">
<id>{dominio}</id>
<title>{titulo}</title>
actualizado
<link href=\"{dominio}atom.xml\" rel=\"self\"/>
<link href=\"{dominio}\" 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>")

# leemos el archivo toAtom.csv y lo procesamos

# ¡PELIGRO! Desde aquí abajo
# ojito con los espacios que python se enfada y
# lo cambié a ojo para que quedara bien en un
# cliente gemini

with open('toAtom.csv', mode='r') as rawfile:
    csvFile = csv.DictReader(rawfile,delimiter='|')
    with open(f'.nextToAtom{fechora}.csv',mode="w") as nextfile:
        # .nextToAtom es un archivo csv que será el nuevo 
        # to atom. Ahora grabamos la cabecera
        nextfile.write("titulo|enlace|fechora\n") 
        for i in csvFile:
          enlace = f'{dominio}{i["enlace"]}'
          identf = f'<id>{enlace}</id>\n'
          titulo = f'<title>{i["titulo"]}</title>\n'
          if i["fechora"] == "generar":
              actlzd = f'<updated>{fechora}</updated>\n'
              i["fechora"]=fechora
          else:
              actlzd = f'<updated>{i["fechora"]}</updated>\n'
          # Podría simplificar este punto con un operador
          # ternario pero... meh, queda claro así y éste 
          # script es muy... (lo acabaré cambiando, si es
          # que no tengo remedio
          linktag = f'<link href="{enlace}" rel="alternate"/>\n'
          salida += f"\n<entry>\n{identf}{titulo}{actlzd}{linktag}</entry>\n"
          with open(f'.nextToAtom{fechora}.csv', mode='a') as nextfile:
              nextfile.write(f'{i["titulo"]}|{i["enlace"]}|{i["fechora"]}\n') 
              # grabo una nueva líne en 

salida += f"\n{pie}"

with open(f'.atom{fechora}.draft', mode='w') as outputfile:
    outputfile.writelines(salida) 

Enlaces

Versión anterior y peor de esta cosa

🏠 Volver al índice

ailolai@protonmail.com