Spaces:
Runtime error
Runtime error
Update server.js
Browse files
server.js
CHANGED
|
@@ -13,7 +13,8 @@ const app = express();
|
|
| 13 |
app.use(cors());
|
| 14 |
app.use(express.json());
|
| 15 |
|
| 16 |
-
|
|
|
|
| 17 |
|
| 18 |
const GEMINI_API_KEY = process.env.GEMINI_API_KEY || process.env.gemini_api || '';
|
| 19 |
|
|
@@ -25,7 +26,8 @@ if (TTS_CREDENTIALS) {
|
|
| 25 |
ttsClient = new TextToSpeechClient();
|
| 26 |
}
|
| 27 |
|
| 28 |
-
|
|
|
|
| 29 |
|
| 30 |
async function ensureDir(dir) {
|
| 31 |
try {
|
|
@@ -124,7 +126,8 @@ async function processUploadedImage(filePath, aspectRatio) {
|
|
| 124 |
})
|
| 125 |
.toFile(outputFilename);
|
| 126 |
|
| 127 |
-
|
|
|
|
| 128 |
return outputFilename;
|
| 129 |
} catch (error) {
|
| 130 |
console.error('Error al procesar imagen subida:', error.message);
|
|
@@ -181,7 +184,7 @@ async function getAudioDuration(audioPath) {
|
|
| 181 |
}
|
| 182 |
|
| 183 |
app.post('/test-voice', async (req, res) => {
|
| 184 |
-
await ensureDir(TEMP_DIR);
|
| 185 |
const { text, lang, service } = req.body;
|
| 186 |
try {
|
| 187 |
const audioFilePath = await textToSpeech(text, lang, service);
|
|
@@ -207,7 +210,10 @@ app.post('/test-voice', async (req, res) => {
|
|
| 207 |
});
|
| 208 |
|
| 209 |
app.post('/generate-video', upload.array('photos'), async (req, res) => {
|
|
|
|
| 210 |
await ensureDir(TEMP_DIR);
|
|
|
|
|
|
|
| 211 |
const { script, useLlmForScript, aspectRatio, imageDuration, shouldGenerateImages, imageGenerationPrompt, voiceService, voiceLanguage } = req.body;
|
| 212 |
let uploadedFiles = req.files || [];
|
| 213 |
|
|
@@ -417,6 +423,8 @@ app.post('/generate-video', upload.array('photos'), async (req, res) => {
|
|
| 417 |
|
| 418 |
const PORT = process.env.PORT || 5000;
|
| 419 |
app.listen(PORT, async () => {
|
|
|
|
| 420 |
await ensureDir(TEMP_DIR);
|
|
|
|
| 421 |
console.log(`Servidor Node.js escuchando en el puerto ${PORT}`);
|
| 422 |
});
|
|
|
|
| 13 |
app.use(cors());
|
| 14 |
app.use(express.json());
|
| 15 |
|
| 16 |
+
// Se cambia el destino de Multer a un directorio dentro de /tmp, que es siempre escribible en Docker
|
| 17 |
+
const upload = multer({ dest: '/tmp/temp_uploads/' });
|
| 18 |
|
| 19 |
const GEMINI_API_KEY = process.env.GEMINI_API_KEY || process.env.gemini_api || '';
|
| 20 |
|
|
|
|
| 26 |
ttsClient = new TextToSpeechClient();
|
| 27 |
}
|
| 28 |
|
| 29 |
+
// Se cambia el directorio temporal general a un directorio dentro de /tmp
|
| 30 |
+
const TEMP_DIR = '/tmp/temp_files';
|
| 31 |
|
| 32 |
async function ensureDir(dir) {
|
| 33 |
try {
|
|
|
|
| 126 |
})
|
| 127 |
.toFile(outputFilename);
|
| 128 |
|
| 129 |
+
// Es importante eliminar el archivo original subido por multer después de procesarlo
|
| 130 |
+
await fs.unlink(filePath);
|
| 131 |
return outputFilename;
|
| 132 |
} catch (error) {
|
| 133 |
console.error('Error al procesar imagen subida:', error.message);
|
|
|
|
| 184 |
}
|
| 185 |
|
| 186 |
app.post('/test-voice', async (req, res) => {
|
| 187 |
+
await ensureDir(TEMP_DIR); // Asegura que TEMP_DIR exista
|
| 188 |
const { text, lang, service } = req.body;
|
| 189 |
try {
|
| 190 |
const audioFilePath = await textToSpeech(text, lang, service);
|
|
|
|
| 210 |
});
|
| 211 |
|
| 212 |
app.post('/generate-video', upload.array('photos'), async (req, res) => {
|
| 213 |
+
// Asegura que tanto TEMP_DIR como el directorio de destino de Multer existan y sean escribibles
|
| 214 |
await ensureDir(TEMP_DIR);
|
| 215 |
+
await ensureDir(upload.dest); // Crea el directorio para los uploads de Multer si no existe
|
| 216 |
+
|
| 217 |
const { script, useLlmForScript, aspectRatio, imageDuration, shouldGenerateImages, imageGenerationPrompt, voiceService, voiceLanguage } = req.body;
|
| 218 |
let uploadedFiles = req.files || [];
|
| 219 |
|
|
|
|
| 423 |
|
| 424 |
const PORT = process.env.PORT || 5000;
|
| 425 |
app.listen(PORT, async () => {
|
| 426 |
+
// Asegura que los directorios temporales existan al iniciar el servidor
|
| 427 |
await ensureDir(TEMP_DIR);
|
| 428 |
+
await ensureDir('/tmp/temp_uploads'); // Asegura que el directorio de uploads de Multer exista
|
| 429 |
console.log(`Servidor Node.js escuchando en el puerto ${PORT}`);
|
| 430 |
});
|