Curinha commited on
Commit
268637c
·
1 Parent(s): 56998f6

Refactor main page to Gradio interface and enhance API documentation accessibility

Browse files
Files changed (1) hide show
  1. app.py +40 -100
app.py CHANGED
@@ -69,104 +69,44 @@ async def generate_music_endpoint(request: AudioRequest):
69
  except Exception as e:
70
  raise HTTPException(status_code=500, detail=str(e))
71
 
72
- # Página principal simplificada (HTML puro)
73
- @app.get("/", response_class=HTMLResponse)
74
- async def home():
75
- html_content = """
76
- <!DOCTYPE html>
77
- <html>
78
- <head>
79
- <title>API de Sonidos Generativos</title>
80
- <meta charset="UTF-8">
81
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
82
- <style>
83
- body {
84
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
85
- line-height: 1.6;
86
- max-width: 800px;
87
- margin: 0 auto;
88
- padding: 20px;
89
- color: #333;
90
- }
91
- .container {
92
- background-color: #f9f9f9;
93
- border-radius: 8px;
94
- padding: 20px;
95
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
96
- }
97
- h1 {
98
- color: #2563eb;
99
- margin-top: 0;
100
- }
101
- .button {
102
- display: inline-block;
103
- background-color: #2563eb;
104
- color: white;
105
- padding: 10px 20px;
106
- text-decoration: none;
107
- border-radius: 4px;
108
- font-weight: 500;
109
- margin-right: 10px;
110
- margin-top: 10px;
111
- }
112
- .button:hover {
113
- background-color: #1d4ed8;
114
- }
115
- pre {
116
- background-color: #f1f1f1;
117
- padding: 10px;
118
- border-radius: 4px;
119
- overflow-x: auto;
120
- }
121
- code {
122
- font-family: monospace;
123
- }
124
- </style>
125
- </head>
126
- <body>
127
- <div class="container">
128
- <h1>API de Sonidos Generativos</h1>
129
- <p>Bienvenido al servicio de generación de sonidos y música mediante IA.</p>
130
-
131
- <h2>Documentación</h2>
132
- <p>La API completa está documentada y disponible en los siguientes enlaces:</p>
133
- <a href="/api/docs" class="button">Swagger UI</a>
134
- <a href="/api/redoc" class="button">ReDoc</a>
135
-
136
- <h2>Endpoints disponibles</h2>
137
- <ul>
138
- <li><strong>GET /api/health</strong> - Verificar estado del servicio</li>
139
- <li><strong>POST /api/generate-sound/</strong> - Generar sonido a partir de descripción</li>
140
- <li><strong>POST /api/generate-music/</strong> - Generar música a partir de descripción</li>
141
- </ul>
142
-
143
- <h2>Ejemplos de uso</h2>
144
- <h3>Generar sonido</h3>
145
- <pre><code>curl -X POST "http://localhost:7860/api/generate-sound/" \\
146
- -H "Content-Type: application/json" \\
147
- -d '{"prompt": "Un trueno distante", "duration": 15, "pitch": 0.9}'</code></pre>
148
-
149
- <h3>Generar música</h3>
150
- <pre><code>curl -X POST "http://localhost:7860/api/generate-music/" \\
151
- -H "Content-Type: application/json" \\
152
- -d '{"prompt": "Melodía relajante", "genre": "ambient", "duration": 60, "bpm": 100}'</code></pre>
153
- </div>
154
- </body>
155
- </html>
156
- """
157
- return html_content
158
-
159
- # También puedes ofrecer una redirección directa a la documentación si lo prefieres
160
- @app.get("/docs", response_class=RedirectResponse, status_code=302)
161
- async def redirect_to_docs():
162
- return "/api/docs"
163
-
164
- # Confirmar inicialización
165
- print("✅ Servidor inicializado correctamente !!!!")
166
- print("🌐 Página principal disponible en la ruta '/'")
167
- print("📝 Endpoints de la API disponibles en '/api/*'")
168
- print("📄 Documentación disponible en '/api/docs'")
169
-
170
- # Iniciar el servidor
171
  if __name__ == "__main__":
172
- uvicorn.run(app, host="0.0.0.0", port=7860)
 
 
 
 
 
 
 
 
69
  except Exception as e:
70
  raise HTTPException(status_code=500, detail=str(e))
71
 
72
+ # IMPORTANTE: Configurar Gradio con server_port y server_name explícitamente
73
+ # para evitar problemas de puerto
74
+ with gr.Blocks(
75
+ theme=gr.themes.Default(), # Asegurar que se cargue el tema
76
+ ) as demo:
77
+ gr.Markdown("# 🎵 API de Sonidos Generativos")
78
+ gr.Markdown("Esta interfaz permite interactuar con la API de generación de sonidos.")
79
+ with gr.Tab("Información de la API"):
80
+ gr.Markdown("""
81
+ ## Documentación completa
82
+
83
+ Puedes acceder a la documentación detallada de la API en:
84
+
85
+ - [Documentación Swagger](/api/docs)
86
+ - [Documentación ReDoc](/api/redoc)
87
+
88
+ ## Endpoints disponibles
89
+
90
+ - `GET /api/health` - Verificar el estado del servicio
91
+ - `POST /api/generate-sound` - Generar sonido a partir de descripción
92
+ - `POST /api/generate-music` - Generar música a partir de descripción
93
+ """)
94
+
95
+ # CLAVE: Configurar correctamente las opciones al montar Gradio en FastAPI
96
+ app = gr.mount_gradio_app(
97
+ app,
98
+ demo,
99
+ path="/",
100
+ favicon_path=None # Evitar problemas con el favicon
101
+ )
102
+
103
+ # Iniciar el servidor con configuraciones explícitas
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  if __name__ == "__main__":
105
+ # El puerto DEBE ser un entero, no una cadena
106
+ port = 7860
107
+ uvicorn.run(
108
+ app,
109
+ host="0.0.0.0",
110
+ port=port,
111
+ log_level="info"
112
+ )