CoolFace
Apppublic

Lowtone/deeplXnodeless

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
server.js76 linesDownload Raw Back to root
1const express = require('express');2const bodyParser = require('body-parser');3const { translate } = require('./translate');4const cors = require('cors');5const fs = require('fs');6const app = express();7const PORT = 7860;8 9app.use(cors({ origin: '*' }));10app.use(bodyParser.json());11 12let delay = 1500;13const delayIncrement = 100;14const maxDelay = 5000;15let currentTranslations = 0;16 17function delayFileTermination(delay) {18  if (fs.existsSync('delay.txt')) {19    delay = parseInt(fs.readFileSync('delay.txt', 'utf8'));20  } else {21    fs.writeFile('delay.txt', `delay:${delay}`, function (err) {22      if (err === null) {23        console.log('success');24      } else {25        console.log('fail');26      }27    });28  }29}30 31console.log('File system loaded');32 33app.post('/translate', async (req, res) => {34  console.log('Translate start');35  currentTranslations++;36 37  const { text, source_lang, target_lang } = req.body;38 39  try {40    await new Promise((resolve) => setTimeout(resolve, delay));41    const result = await translate(text, source_lang, target_lang);42    const responseData = {43      alternatives: result.alternatives,44      code: 200,45      data: result.text,46      id: Math.floor(Math.random() * 10000000000),47      method: 'Free',48      source_lang,49      target_lang,50    };51    res.json(responseData);52  } catch (error) {53    console.error(`Translation failed: ${error}`);54    res.status(500).json({ error: 'Translation failed' });55    delay += delayIncrement;56    if (delay > maxDelay) {57      delay = maxDelay;58    }59    delayFileTermination(delay);60    console.log(`현재 Delay 타임: ${delay}ms`);61  } finally {62    currentTranslations--;63  }64});65 66app.get('/', (req, res) => {67  const delayMessage = fs.existsSync('delay.txt')68    ? fs.readFileSync('delay.txt', 'utf8')69    : '0';70  const statusMessage = `서버가 구동되었습니다. 현재 딜레이 시간은 ${delay}ms이며, 현재 처리 중인 번역 요청 수는 ${currentTranslations}건입니다.`;71  res.send(statusMessage);72});73 74app.listen(PORT, () => {75  console.log(`Server is running on http://localhost:${PORT}`);76});