💾 Archived View for bosque-protector.com › codigo › cola-publicar-gemini.gmi captured on 2024-12-17 at 09:42:51. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Creo que tengo ya el borrador de un script en python que haga que el servidor publique un y un solo archivo al día. La idea es que, si estoy de viaje o lo que sea, pueda subir por rsync una lista de archivos gemtext (o pdf o txt si me da por ahí) y el script los publique a razón de uno al día. Esto es, en parte, por respetar una frecuencia de publicación lenta, a escala humana, "despacito y buena letra" y todo eso.
El rsync será un poco más complicado porque en realidad, con otro script pendiente de hacer,
haré que justo después de mandar los ficheros al servidor, se muevan, en origen los archivos a otra carpeta. Es decir que en mi disco duro local se muevan de, p.ej: ~/cola/ a ~/cola-backup/. Así no hay
peligro de volver a mandar lo que mandé, solo añadiría archivos nuevos.
Al script lo lanzará un cronjob tres o cuatro veces al día (los cronjobs pueden fallar porque el servidor esté apagado, por ejemplo). Por eso lo primero que hace es comprobar si ya publicó algo hoy.
Como todavía tengo que revisarlo mucho, compartiré hoy solo el algoritmo en pseudo-código y a grandes rasgos, sin detallar las funciones. Tampoco es que sea tan difícil, pero solo quiero que veas la idea general, y no poner aquí código que pueda estar lleno de vulnerabilidades, bugs y cosas-chungas (c).
if publishedAlready(): # publishedAlready es una función que mira # si el script ya publicó algo hoy # Para ello mira en el archivo lastDayIpublished.txt # y comprueba si la fecha grabada # es igual a la fecha # # -- En ese caso no se hace nada, solo se loguea logging.info("Ya publiqué hoy") else: f_name_2_publish = get_first_file_in_queue("queue") # get_first_file_in_queue mira en la carpeta de cola # que aquí llamo queue y saca el primer archivo q # encuentre ,después de ordenarlo por orden # alfabético (podría ser otro) logging.info(f_name_2_publish) if f_name_2_publish == "": # f_name_2_publish devuelve "" si no hay archivos # en la cola. logging.info("Nothing to publish here!") else: published = publish_file(f_name_2_publish) # publish_file _intenta_ publicar el fichero, # que puede dar error, p.ej. porque ya estuviera # publicado o fuera a ir a una carpeta que no # existe. El criterio es que es mejor no publicar # nada, que publicar si existe algún error. # # publish_file devuelve True (Verdadero) solo # si efectivamente ha publicado if published: delete_file('queue/' + f_name_2_publish) # borramos el fichero de la cola si y solo si # hemos publicado update_gemfeed('queue/' + f_name_2_publish) # pues eso, actualiza mi archivo esta_capsula/gemfeed.gmi record_that_I_published_today() # actualiza el archivo lastDayIpublished.txt con # la fecha de hoy para que no intente publicar # otra vez hoy.
Pues eso sería todo. Insisto en que está muy verde (no lo tengo en funcionamiento, a fecha de 2024-12-14) y que está pensado para las necesidades de mi cápsula y las de nadie más. Lo comparto solo por si os puede inspirar alguna idea. Y, bueno, porque ya tengo hecho el post del día. (^_^)/···