import win32print

try:    
    impresoras: list[dict] = []
    impresora_default = win32print.GetDefaultPrinter()
        
    impresoras_sistema = win32print.EnumPrinters(
        win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS
    )

    print("\nLISTA DE IMPRESORAS\n")

    for impresora in impresoras_sistema:
        nombre_impresora = impresora[2]
        try:
            handle = win32print.OpenPrinter(nombre_impresora)
            estado_info = win32print.GetPrinter(handle, 2)
            win32print.ClosePrinter(handle)
            
            if estado_info['Status'] == 0:
                estado = "disponible"
            else:
                estado = "ocupada"
                
        except Exception:
            estado = "desconocido"
        
        print("-------------------------------")
        print(f"nombre: {nombre_impresora}")
        print(f"estado: {estado}")
        print(f"predefinida: {(nombre_impresora == impresora_default)}")

except Exception as e:
    print(f"Error al imprimir: {e}")