caissaa23 commited on
Commit
18cab6d
·
verified ·
1 Parent(s): ce4abf9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +109 -18
app.py CHANGED
@@ -1,4 +1,5 @@
1
  import gradio as gr
 
2
  from datetime import datetime
3
  from chatbot_nuti import buscar_respuesta
4
  from coach_emocional import coach_emocional_inteligente
@@ -7,7 +8,7 @@ from coach_emocional import coach_emocional_inteligente
7
  MEMORIA_NUTI = []
8
  MEMORIA_COACH = []
9
 
10
- # ---------- CHATBOT NUTI (Nutrición Inteligente) ---------- #
11
  def conversar_nuti(mensaje, historial):
12
  MEMORIA_NUTI.append({"user": mensaje})
13
  respuesta = buscar_respuesta(mensaje, MEMORIA_NUTI)
@@ -29,7 +30,7 @@ def calcular_calorias(edad, peso, altura, genero, actividad):
29
  bmr = 655 + (9.6 * peso) + (1.8 * altura) - (4.7 * edad)
30
  else:
31
  bmr = 66 + (13.7 * peso) + (5 * altura) - (6.8 * edad)
32
-
33
  factores = {
34
  "sedentario": 1.2,
35
  "ligero": 1.375,
@@ -40,8 +41,14 @@ def calcular_calorias(edad, peso, altura, genero, actividad):
40
  calorias = round(bmr * factores.get(actividad.lower(), 1.55))
41
  return f"🔥 Puedes consumir aproximadamente **{calorias} calorías por día** para mantener tu peso actual."
42
 
43
- # ---------- MISIÓN SALUDABLE (Gamificación) ---------- #
44
- import random
 
 
 
 
 
 
45
  MISIONES = [
46
  "Bebe 8 vasos de agua hoy 💧",
47
  "Come una fruta nueva 🍎",
@@ -51,23 +58,78 @@ MISIONES = [
51
  "Duerme al menos 8 horas 😴",
52
  "Haz 10 minutos de respiración consciente 🧘‍♀️"
53
  ]
54
-
55
  def nueva_mision():
56
  return f"🎯 Tu misión de hoy: {random.choice(MISIONES)}"
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  # ---------- INTERFAZ PRINCIPAL ---------- #
59
  def main():
60
  with gr.Blocks(title="NutriBot Ultra 🥗") as app:
61
  gr.Markdown("""
62
  # 🧠 Bienvenido a **NutriBot Ultra**
63
- Tu asistente inteligente de **nutrición, emociones y bienestar.**
64
- - Calcula tus calorías 🔢
65
- - Habla con **Nuti**, tu guía de alimentación 🍽️
66
- - Habla con tu **Coach Emocional** 💬
67
- - Cumple **retos saludables** 🎮
68
  """)
69
 
70
- with gr.Tab("📊 Calorías Diarias"):
 
71
  with gr.Row():
72
  edad = gr.Number(label="Edad (años)")
73
  peso = gr.Number(label="Peso (kg)")
@@ -79,27 +141,56 @@ def main():
79
  )
80
  boton_calorias = gr.Button("Calcular calorías 🔥")
81
  salida_calorias = gr.Markdown()
82
- boton_calorias.click(
83
- calcular_calorias,
84
- inputs=[edad, peso, altura, genero, actividad],
85
- outputs=salida_calorias
86
- )
 
 
 
87
 
 
88
  with gr.Tab("🤖 Chat con Nuti"):
89
  chat_nuti = gr.Chatbot(label="Nuti - Tu guía de nutrición 🍎")
90
  entrada_nuti = gr.Textbox(label="Escribe algo para Nuti...")
91
  boton_nuti = gr.Button("Enviar")
92
  boton_nuti.click(conversar_nuti, inputs=[entrada_nuti, chat_nuti], outputs=[chat_nuti, entrada_nuti])
93
 
 
94
  with gr.Tab("🧘 Coach Emocional"):
95
  chat_coach = gr.Chatbot(label="Coach Emocional 🌿")
96
  entrada_coach = gr.Textbox(label="Cuéntame cómo te sientes hoy...")
97
  boton_coach = gr.Button("Enviar")
98
  boton_coach.click(conversar_coach, inputs=[entrada_coach, chat_coach], outputs=[chat_coach, entrada_coach])
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  with gr.Tab("🎮 Misiones Saludables"):
101
- gr.Markdown("¡Conviértete en un **héroe saludable** cumpliendo retos diarios!")
102
- boton_mision = gr.Button("Obtener misión del día 🌟")
103
  salida_mision = gr.Textbox(label="Tu reto de hoy")
104
  boton_mision.click(nueva_mision, outputs=salida_mision)
105
 
 
1
  import gradio as gr
2
+ import random
3
  from datetime import datetime
4
  from chatbot_nuti import buscar_respuesta
5
  from coach_emocional import coach_emocional_inteligente
 
8
  MEMORIA_NUTI = []
9
  MEMORIA_COACH = []
10
 
11
+ # ---------- CHATBOT NUTI ---------- #
12
  def conversar_nuti(mensaje, historial):
13
  MEMORIA_NUTI.append({"user": mensaje})
14
  respuesta = buscar_respuesta(mensaje, MEMORIA_NUTI)
 
30
  bmr = 655 + (9.6 * peso) + (1.8 * altura) - (4.7 * edad)
31
  else:
32
  bmr = 66 + (13.7 * peso) + (5 * altura) - (6.8 * edad)
33
+
34
  factores = {
35
  "sedentario": 1.2,
36
  "ligero": 1.375,
 
41
  calorias = round(bmr * factores.get(actividad.lower(), 1.55))
42
  return f"🔥 Puedes consumir aproximadamente **{calorias} calorías por día** para mantener tu peso actual."
43
 
44
+ # ---------- SIMULACIÓN DE RELOJ INTELIGENTE ---------- #
45
+ def calorias_reloj(calorias_base, calorias_quemadas):
46
+ total = calorias_base - calorias_quemadas
47
+ if total < 0:
48
+ total = 0
49
+ return f"⌚ Has quemado **{calorias_quemadas} kcal** según tu reloj.\nTe quedan **{total} kcal** por consumir hoy."
50
+
51
+ # ---------- MISIÓN SALUDABLE ---------- #
52
  MISIONES = [
53
  "Bebe 8 vasos de agua hoy 💧",
54
  "Come una fruta nueva 🍎",
 
58
  "Duerme al menos 8 horas 😴",
59
  "Haz 10 minutos de respiración consciente 🧘‍♀️"
60
  ]
 
61
  def nueva_mision():
62
  return f"🎯 Tu misión de hoy: {random.choice(MISIONES)}"
63
 
64
+ # ---------- RECETAS DEL NUTRIÓLOGO ---------- #
65
+ RECETAS = []
66
+
67
+ def subir_receta(nombre, descripcion, imagen):
68
+ if nombre and descripcion:
69
+ receta = {"nombre": nombre, "descripcion": descripcion, "imagen": imagen}
70
+ RECETAS.append(receta)
71
+ return f"✅ Receta '{nombre}' añadida correctamente."
72
+ return "⚠️ Por favor, ingresa nombre y descripción."
73
+
74
+ def mostrar_recetas():
75
+ if not RECETAS:
76
+ return "📭 Aún no hay recetas cargadas. ¡Sube una con tu nutriólogo!"
77
+ texto = "🍽️ **Recetas Recomendadas:**\n\n"
78
+ for r in RECETAS:
79
+ texto += f"**{r['nombre']}**\n{r['descripcion']}\n\n"
80
+ return texto
81
+
82
+ # ---------- BUSCADOR DE NUTRIÓLOGOS ---------- #
83
+ def buscar_nutriologos(pais, estado, ciudad):
84
+ ejemplos = [
85
+ {
86
+ "nombre": "Dra. Sofía Martínez",
87
+ "pais": "México",
88
+ "estado": "Sonora",
89
+ "ciudad": "Hermosillo",
90
+ "especialidad": "Nutrición deportiva",
91
+ "redes": "@nutrisofi (Instagram)",
92
+ "reseña": "⭐️⭐️⭐️⭐️⭐️ 4.9 - Excelente trato y planes realistas."
93
+ },
94
+ {
95
+ "nombre": "Lic. Andrés Gómez",
96
+ "pais": "México",
97
+ "estado": "CDMX",
98
+ "ciudad": "Coyoacán",
99
+ "especialidad": "Nutrición clínica",
100
+ "redes": "@andresnutricion (TikTok)",
101
+ "reseña": "⭐️⭐️⭐️⭐️ 4.7 - Muy actualizado en tendencias saludables."
102
+ },
103
+ {
104
+ "nombre": "Dra. Camila Silva",
105
+ "pais": "Chile",
106
+ "estado": "Región Metropolitana",
107
+ "ciudad": "Santiago",
108
+ "especialidad": "Nutrición y salud emocional",
109
+ "redes": "@camila.wellness (Instagram)",
110
+ "reseña": "⭐️⭐️⭐️⭐️⭐️ 5.0 - Enfoque integral cuerpo-mente."
111
+ }
112
+ ]
113
+ resultados = [n for n in ejemplos if n["pais"].lower() == pais.lower() or n["ciudad"].lower() == ciudad.lower() or n["estado"].lower() == estado.lower()]
114
+ if not resultados:
115
+ return "❌ No se encontraron nutriólogos en esa ubicación aún. Prueba con otro lugar."
116
+ texto = "🧑‍⚕️ **Nutriólogos Recomendados:**\n\n"
117
+ for n in resultados:
118
+ texto += f"**{n['nombre']}** ({n['especialidad']}) - {n['ciudad']}, {n['pais']}\n"
119
+ texto += f"📱 {n['redes']}\n💬 {n['reseña']}\n\n"
120
+ return texto
121
+
122
  # ---------- INTERFAZ PRINCIPAL ---------- #
123
  def main():
124
  with gr.Blocks(title="NutriBot Ultra 🥗") as app:
125
  gr.Markdown("""
126
  # 🧠 Bienvenido a **NutriBot Ultra**
127
+ Tu asistente inteligente de **nutrición + emociones + bienestar** 💪
128
+ Conecta tu reloj, sube recetas, encuentra nutriólogos y habla con tu IA saludable 🌿
 
 
 
129
  """)
130
 
131
+ # --- CALCULADORA DE CALORÍAS Y RELOJ --- #
132
+ with gr.Tab("📊 Calorías y Actividad"):
133
  with gr.Row():
134
  edad = gr.Number(label="Edad (años)")
135
  peso = gr.Number(label="Peso (kg)")
 
141
  )
142
  boton_calorias = gr.Button("Calcular calorías 🔥")
143
  salida_calorias = gr.Markdown()
144
+ boton_calorias.click(calcular_calorias, inputs=[edad, peso, altura, genero, actividad], outputs=salida_calorias)
145
+
146
+ gr.Markdown("### Calorías registradas por tu reloj (simulación)")
147
+ calorias_base = gr.Number(label="Calorías diarias (según cálculo anterior)")
148
+ calorias_quemadas = gr.Number(label="Calorías quemadas (Apple Watch, Fitbit, etc.)")
149
+ boton_reloj = gr.Button("Actualizar datos del reloj")
150
+ salida_reloj = gr.Markdown()
151
+ boton_reloj.click(calorias_reloj, inputs=[calorias_base, calorias_quemadas], outputs=salida_reloj)
152
 
153
+ # --- CHAT NUTI --- #
154
  with gr.Tab("🤖 Chat con Nuti"):
155
  chat_nuti = gr.Chatbot(label="Nuti - Tu guía de nutrición 🍎")
156
  entrada_nuti = gr.Textbox(label="Escribe algo para Nuti...")
157
  boton_nuti = gr.Button("Enviar")
158
  boton_nuti.click(conversar_nuti, inputs=[entrada_nuti, chat_nuti], outputs=[chat_nuti, entrada_nuti])
159
 
160
+ # --- COACH EMOCIONAL --- #
161
  with gr.Tab("🧘 Coach Emocional"):
162
  chat_coach = gr.Chatbot(label="Coach Emocional 🌿")
163
  entrada_coach = gr.Textbox(label="Cuéntame cómo te sientes hoy...")
164
  boton_coach = gr.Button("Enviar")
165
  boton_coach.click(conversar_coach, inputs=[entrada_coach, chat_coach], outputs=[chat_coach, entrada_coach])
166
 
167
+ # --- RECETAS --- #
168
+ with gr.Tab("🍽️ Recetas del Nutriólogo"):
169
+ gr.Markdown("Sube o consulta recetas recomendadas por expertos 🥦")
170
+ nombre = gr.Textbox(label="Nombre de la receta")
171
+ descripcion = gr.Textbox(label="Descripción o ingredientes")
172
+ imagen = gr.Image(label="Foto (opcional)")
173
+ boton_subir = gr.Button("Subir receta")
174
+ salida_subir = gr.Textbox(label="Estado")
175
+ boton_subir.click(subir_receta, inputs=[nombre, descripcion, imagen], outputs=salida_subir)
176
+
177
+ boton_ver = gr.Button("Ver recetas disponibles 🍲")
178
+ salida_recetas = gr.Markdown()
179
+ boton_ver.click(mostrar_recetas, outputs=salida_recetas)
180
+
181
+ # --- NUTRIÓLOGOS --- #
182
+ with gr.Tab("🧑‍⚕️ Buscar Nutriólogos"):
183
+ pais = gr.Textbox(label="País")
184
+ estado = gr.Textbox(label="Estado/Provincia")
185
+ ciudad = gr.Textbox(label="Ciudad")
186
+ boton_buscar = gr.Button("Buscar Nutriólogos 🌍")
187
+ salida_nutri = gr.Markdown()
188
+ boton_buscar.click(buscar_nutriologos, inputs=[pais, estado, ciudad], outputs=salida_nutri)
189
+
190
+ # --- MISIONES --- #
191
  with gr.Tab("🎮 Misiones Saludables"):
192
+ gr.Markdown("¡Cumple retos diarios y gana puntos por tu bienestar! 🌟")
193
+ boton_mision = gr.Button("Obtener misión del día")
194
  salida_mision = gr.Textbox(label="Tu reto de hoy")
195
  boton_mision.click(nueva_mision, outputs=salida_mision)
196