como andan ? Tengo un error 404 al crear una api con flask con.
<!doctype html>
<html lang=en>
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try
again.</p>
Les adjunto el codigo si me pueden ayudar donde le estoy errando gracias.
from flask import Flask, request, jsonify
from iso8583 import encode, decode
from iso8583.specs import default_ascii as spec
import re
import os
import json
from datetime import datetime
def obtener_valor_campo(parsed, campo):
valor = parsed.get(campo)
if isinstance(valor, dict) and "value" in valor:
return valor["value"]
return valor
app = Flask(__name__)
def reconstruir_mensaje(texto):
bloques = re.findall(r'\[(.*?)\]', texto)
return ''.join(bloques)
def extraer_campos_iso(mensaje_iso):
try:
iso_bytes = mensaje_iso.encode()
parsed, _ = decode(iso_bytes, spec=spec)
return {
"mti": parsed.get("mti"),
"campo_3": obtener_valor_campo(parsed, "3"),
"campo_4": obtener_valor_campo(parsed, "4"),
"campo_7": obtener_valor_campo(parsed, "7")
}
except Exception as e:
return {"error": f"Error decodificando mensaje ISO: {str(e)}"}
@app.route('/extraer_campos', methods=['GET'])
def procesar_texto():
try:
datos = request.get_json()
texto = datos.get("texto", "")
mensaje_iso = reconstruir_mensaje(texto)
resultado = extraer_campos_iso(mensaje_iso)
return jsonify(resultado)
except Exception as e:
return jsonify({"error": f"Error general: {str(e)}"}), 500
def es_binario(cadena):
return all(c in '01' for c in cadena)
def limpiar_a_binario(cadena):
return ''.join(c for c in cadena if c in '01')
def procesar_archivo(ruta_archivo, ruta_json, codificacion='utf-8'):
lista_datos = []
try:
with open(ruta_archivo, 'r', encoding=codificacion) as archivo_lectura:
for i, linea in enumerate(archivo_lectura, start=1):
linea = linea.strip()
if not linea:
continue
if es_binario(linea):
binario_entrada = linea
else:
binario_entrada = limpiar_a_binario(linea)
if not binario_entrada:
print(f"Línea {i}: no contiene dígitos binarios válidos, se omite.")
continue
decimal = int(binario_entrada, 2)
hora_actual = datetime.now().strftime('%H:%M:%S.%f')[:-3]
origen_trx = "POS"
destino_trx = "EPS"
mti = '0200'
iso_message_fields = {
't': mti,
'3': '001000',
'4': '000000100002',
'7': '0508155540',
'11': '000002',
'12': '155540',
'13': '0508',
'22': '021',
'19': '032',
'24': '111',
'25': '00',
'35': '6799990100000000019D2512101045120844',
'41': '38010833',
'42': '23659307 ',
'46': '1',
'48': '001',
'49': '032',
'52': 'AEDB54B10FF671F5',
'59': '021000100407070840001023209FFFFF0220002200000DB02800010040784',
'60': 'WPH0001',
'62': '0002',
}
encoded_iso_raw, _ = encode(iso_message_fields, spec)
decoded_iso_data, _ = decode(encoded_iso_raw, spec)
lista_datos.append({
'hora_procesamiento': hora_actual,
'origen_transaccion': origen_trx,
'destino_transaccion': destino_trx,
'decimal_from_input': decimal,
'iso_message_raw': encoded_iso_raw.decode('ascii'),
'iso_message_decoded': decoded_iso_data
})
with open(ruta_json, 'w', encoding=codificacion) as f_json:
json.dump(lista_datos, f_json, indent=2)
print(f"Archivo JSON guardado en: {ruta_json}")
except FileNotFoundError as fnf_error:
print(f"Error: archivo no encontrado: {fnf_error}")
except Exception as e:
print(f"Error inesperado: {e}")
if __name__ == "__main__":
# Define aquí las rutas de entrada y salida:
ruta_archivo = r"C:\Users\mbale\Downloads\AutomatizacionAudit\LecturaAudit\POS-EPS\LecturaAudit.txt"
ruta_json = r"C:\Users\mbale\Downloads\AutomatizacionAudit\LecturaAudit\POS-EPS\Salida.json"
procesar_archivo(ruta_archivo, ruta_json)
app.run(debug=True, host="127.0.0.1", port=5000)