3.6 KiB
Memoria de Evolución - Procesador de Emails a Cronología
Descripcion de los scripts Procesador de Emails a Cronología
Este script procesa archivos de correo electrónico (.eml) para extraer su contenido, gestionar adjuntos y generar un archivo Markdown que presenta los mensajes en orden cronológico inverso.
Lógica Principal:
Beautify: Carga reglas de embellecimiento de texto desde config/beautify_rules.json para limpiar el contenido de los correos. Descubrimiento: Busca todos los archivos .eml en el directorio de trabajo configurado.
Procesamiento Individual: Itera sobre cada archivo .eml encontrado. Utiliza utils.email_parser.procesar_eml para extraer metadatos (fecha, asunto, remitente, destinatarios), contenido del cuerpo y guardar los archivos adjuntos en la carpeta especificada. Calcula un hash para cada mensaje para detectar duplicados.
Si un mensaje es nuevo (no duplicado):
Aplica las reglas de BeautifyProcessor al contenido del cuerpo. Añade el mensaje procesado a una lista.
Ordenación: Ordena la lista de mensajes únicos por fecha, del más reciente al más antiguo.
Generación de Índice: Crea una sección de índice en formato Markdown con enlaces internos a cada mensaje. Salida Markdown: Escribe el índice seguido del contenido formateado en Markdown de cada mensaje en el archivo de salida configurado (ej. cronologia.md).
2025-08-08 — Inversión de directorios (entrada/salida)
- Decisión: Alinear con la guía
backend_setup.md
para que:working_directory
sea el directorio de salida (resultado), donde se escribecronologia.md
y se guardan los adjuntos.level3.input_directory
sea el directorio de entrada donde se leen los.eml
.
- Cambios:
esquema_work.json
: se renombraoutput_directory
→input_directory
y se actualizantitle
/description
.x1.py
:- Lee
level3.input_directory
como entrada. - Escribe
cronologia_file
yattachments_dir
dentro deworking_directory
. - Crea directorios de salida si no existen.
- Se corrigen lints (E402 y líneas largas) sin alterar lógica.
- Lee
- Impacto:
- Los
work_dir.json
existentes deben actualizar la clave ainput_directory
. - No hay cambios en claves de
level2
(cronologia_file
,attachments_dir
).
- Los
2025-08-08 — Manejo de imágenes (inline y adjuntas) y embebido en Markdown
- Decisión:
- Capturar imágenes tanto adjuntas (
attachment
) como inline (inline
/sinContent-Disposition
). - Guardar las imágenes en el directorio de adjuntos configurado y además copiar a
adjuntos/cronologia
dentro delworking_directory
. - Incrustar en el Markdown enlaces de Obsidian con ruta absoluta al archivo copiado en
adjuntos/cronologia
usando la sintaxis de embed![[...]]
bajo una sección### Imágenes
por mensaje.
- Capturar imágenes tanto adjuntas (
- Cambios:
utils/attachment_handler.py
: nueva funciónguardar_imagen
que genera nombres a partir deContent-ID
o hash y evita colisiones por contenido; refactor de hashing de contenido.utils/email_parser.py
:- Se amplía la firma de
procesar_eml
/procesar_eml_interno
para recibirdir_adjuntos_cronologia
y copiar allí las imágenes. - Se manejan imágenes en partes
attachment
yinline
, agregando su ruta absoluta copiada amensaje.imagenes_cronologia
.
- Se amplía la firma de
models/mensaje_email.py
:to_markdown()
agrega sección### Imágenes
con![[ruta_absoluta]]
previo a### Adjuntos
.x1.py
: creaadjuntos/cronologia
y pasa la ruta al parser.
- Impacto:
- El
.md
resultante muestra las imágenes embebidas (Obsidian) desde rutas absolutas bajo.../adjuntos/cronologia/...
. - Se preserva el listado de adjuntos como enlaces
[[archivo]]
.
- El