Lowtone/deeplXnodeless
0
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});