29-06-24
Veo que me ha hecho renegar un poco más este maldito regenerador de la página principal. Pero vamos, un Técnico Ligero jamás claudica ante las adversidades. Sólo procastina y deja todo para más adelante, puede ser, pero jamás claudica.
Vamos a por el código, como debe ser.
import os nom_directorio = 'gemlog' #esto se podría cambiar por input=('ingrese nombre de directorio') lista_datos = [] documento = [] for ruta, directorio, archivos in os.walk(nom_directorio): archivos.sort(reverse=True) for elemento in archivos: if 'info.gmi' not in archivos: lista_datos.append('=>'+str(ruta)+'/'+str(elemento)+' '+str(elemento[:-3])+"\n") #lista_datos2.append('=>/'+str(ruta)+'/'+str(elemento)+' '+str(elemento[:-3])+"\n") ########################################################################## #Voy a generar el index de la página principal a partir del index_base #que tengo con el formato ########################################################################## archivo_base = open ('index_base.gmi', 'r', encoding='utf-8') documento = archivo_base.readlines() archivo_base.close() #Voy a seccionar para la página principal solo las primeras 5 entradas: ultimas_cinco_entradas= lista_datos[:5] for i in range(len(documento)): if 'Últimas 5 entradas' in documento[i]: for linea1 in ultimas_cinco_entradas: documento[i] += linea1 #Escribo el index con el contenido de la lista documento: with open('index.gmi', 'w') as nuevo_index: for linea2 in documento: nuevo_index.write(linea2) nuevo_index.close() ########################################################################## #Ahora voy a escribir el info de la sección gemlog, con todas las entradas ########################################################################## archivo_base_entradas = open ('gemlog/info_base.gmi', 'r', encoding='utf-8') documento_entradas = archivo_base_entradas.readlines() archivo_base_entradas.close() for i in range(len(documento_entradas)): if 'Listado por fecha:' in documento_entradas[i]: for linea1 in lista_datos: documento_entradas[i] += linea1 #Escribo el index con el contenido de la lista documento: with open('gemlog/info.gmi', 'w') as nuevo_index2: for linea2 in documento_entradas: nuevo_index2.write(linea2) nuevo_index2.write('\n =>../ Volver al inicio') nuevo_index2.close() print ("¡Todo creado!")
Lo primero que hay que tener en cuenta es cómo me gusta explicar el código, vamos :P
Digo, lo primero que hay que crear es un index_base.gmi, como 'original', porque de ese va a copiar el index con el listado. Éste tiene que estar vacío de entradas, claro.
Después sí, al código: importamos nuestro querido módulo os, creamos una lista, 2, que va a almacenar elementos string con las rutas a las entradas. Por el momento vacía. Lo mismo para 'documento', que no será más que la lista que almacenará el contenido de nuestra página principal y efectuará modificaciones.
El 'nom_directorio' de más arriba sirve para recorrer la carpeta que corresponda. Yo le puse 'gemlog' y dentro voy a separar por año. En este caso, al empezar el script solo tengo '2024', pero pienso agregar más adelante años anteriores que tenía en el sitio con el protocolo HTTP.
Empieza a recorrer con os.walk el archivo, amo esta función, cualquier técnico que se precie de scriptear debería amarla, podes encontrar todo, todillo, como diría Flanders.
Cuando recorro, armo la lista con los nombres de la 'ruta'+'nombre del archivo. Va a servir para la página principal (solo para unas cuantas entradas, no todas) y para un index dentro del gemlog que va a almacenar el listado completo de entradas.
Más abajo abro el archivo 'index_base' y lo guardo en una lista, la misma que mencioné antes arriba, 'documentos'. El readlines te guarda en una lista.
Después recorro esa lista y si encuentra una línea que empieza por 'Entradas', ahí es donde agrega la primera lista, 'lista_datos', recorrida también línea a línea.
Acto seguido lo que hago es escribir el 'index.gmi' nuevo con todo el contenido modificado de la lista documento, que tiene ahora el listado de entradas nuevo.
Por último hago lo mismo con el archivo que mencioné que está en el raiz del directorio gemlog, 'info.gmi'. Lo escribo 2 veces porque al final agrego el enlace para volver a la página principal.
Bueno, esto fue 'Momentos vespertinos de scripts en la cápsula de un Técnico Ligero' y espero que les haya gustado :P