se termina la descarga de los adjuntos y solo se deja los mails con adjuntos pdf y xml
This commit is contained in:
1 parent
0855948192
commit
937c4d6260
4 files changed
+68
-31
No files matched your search
@@ -42,7 +42,7 @@ def descargar_correos(outlook_token, fecha_inicio, fecha_fin):
|
||||
########################################################
|
||||
def descargar_adjuntos_de_correos(outlook_token, emails, ruta_descarga):
|
||||
try:
|
||||
|
||||
emails_con_adjuntos = []
|
||||
for email in emails:
|
||||
# Guardar lista original para el log
|
||||
adjuntos = outlook_utilities.download_attachments(
|
||||
@@ -51,15 +51,31 @@ def descargar_adjuntos_de_correos(outlook_token, emails, ruta_descarga):
|
||||
outlook_token,
|
||||
ruta_descarga)
|
||||
if adjuntos:
|
||||
email['adjuntos'] = adjuntos
|
||||
email['adjuntos'] = adjuntos
|
||||
emails_con_adjuntos.append(email)
|
||||
|
||||
return emails
|
||||
return emails_con_adjuntos
|
||||
|
||||
except Exception as ex:
|
||||
print(f" ❌ Error procesando {email['id'][:10]}: {ex}")
|
||||
|
||||
return []
|
||||
|
||||
########################################################
|
||||
def dejar_mail_si_tiene_adjunto_pdf_o_xml(emails):
|
||||
"""
|
||||
Recorre los adjuntos de cada email y elimina los que no tengan extensión pdf o xml
|
||||
actualiza la lista de adjuntos del correo
|
||||
si el mail no tiene pdf ni xml también se elimina
|
||||
"""
|
||||
emails_con_pdf_o_xml = []
|
||||
for email in emails:
|
||||
adjuntos_validos = [adjunto for adjunto in email['adjuntos'] if adjunto.lower().endswith(('.pdf', '.xml'))]
|
||||
if adjuntos_validos:
|
||||
email['adjuntos'] = adjuntos_validos
|
||||
emails_con_pdf_o_xml.append(email)
|
||||
return emails_con_pdf_o_xml
|
||||
|
||||
########################################################
|
||||
def main():
|
||||
|
||||
@@ -83,27 +99,34 @@ def main():
|
||||
# se verifica si estos correos ya estan en la base de datos
|
||||
# si ya esta registrado, se quita del listado
|
||||
# si no esta se inserta en la base de datos
|
||||
|
||||
emails = email_utilities.quitar_correos_ya_registrados_en_base_de_datos(emails)
|
||||
|
||||
# descargar todos los adjuntos de cada mail
|
||||
|
||||
# descargar adjuntos de cada correo y agregar
|
||||
emails = descargar_adjuntos_de_correos(outlook_token, emails, CONFIG.client.ruta_descarga)
|
||||
|
||||
# with open("correos_con_adjuntos.json", "w", encoding="utf-8") as f:
|
||||
# json.dump(emails, f, ensure_ascii=False, indent=4)
|
||||
|
||||
|
||||
# si el correo tiene archivos zip, se descomprimen y se agregan a
|
||||
# la lista de archivos adjuntos
|
||||
emails = email_utilities.descomprimir_adjuntos(emails, CONFIG.client.ruta_descarga)
|
||||
|
||||
# se eliminan mails que no tengan adjunto pdf o xml
|
||||
# también se eliminar los adjuntos no que sean xml y pdf
|
||||
emails = dejar_mail_si_tiene_adjunto_pdf_o_xml(emails)
|
||||
|
||||
|
||||
|
||||
# se evalua los adjuntos del correo:
|
||||
# 1. se quita de la lista el correo si no tiene adjunto
|
||||
# 2. se quita de la lista el correo si no tiene
|
||||
|
||||
for e in emails:
|
||||
print(f"\n📬 [{e['fecha']}] {e['subject'][:80]}...")
|
||||
archivos_adjuntos = descargar_adjunto_de_correo(outlook_token, e['id'], CONFIG.client.ruta_descarga)
|
||||
|
||||
|
||||
#adjuntos originales
|
||||
print(f" ├── 📂 Adjuntos originales:")
|
||||
for idx, a in enumerate(e['adjuntos']):
|
||||
prefijo = " │ └── " if idx == len(e['adjuntos'])-1 else " │ ├── "
|
||||
print(f"{prefijo}{a}")
|
||||
|
||||
########################################################
|
||||
if __name__ == "__main__":
|
||||
|
||||
|
||||
Reference in new issue
Block a user