deeplXnodeless / server.js
MISASI's picture
Update server.js
adec696 verified
raw
history blame
2.02 kB
const express = require('express')
const bodyParser = require('body-parser')
const { translate } = require('./translate')
const cors = require('cors')
const fs = require('fs')
const app = express()
const PORT = 7860
app.use(cors({ origin: '*' }))
app.use(bodyParser.json())
let delay = 1500
const delayIncrement = 100
const maxDelay = 5000
let currentTranslations = 0
function delayFileTermination(delay) {
if (fs.existsSync('delay.txt')) {
delay = parseInt(fs.readFileSync('delay.txt', 'utf8'))
}else{
fs.writeFile('delay.txt', 'delay:{$delay}', function(err){
if(err = null){
console.log('success')
}else{
console.log('fail')
}
})
}
}
console.log('File system loaded')
app.post('/translate', async (req, res) => {
console.log('Translate start')
currentTranslations++
const { text, source_lang, target_lang } = req.body
try {
await new Promise(resolve => setTimeout(resolve, delay))
const result = await translate(text, source_lang, target_lang)
const responseData = {
alternatives: result.alternatives,
code: 200,
data: result.text,
id: Math.floor(Math.random() * 10000000000),
method: 'Free',
source_lang,
target_lang,
}
res.json(responseData)
console.log(`"${text}" -> "${result.text}"`)
} catch (error) {
console.log('Translation failed : ${error}')
delay = delay + 100
delayFileTermination(delay)
console("ν˜„μž¬ Delay νƒ€μž„:" + delay + "ms")
} finally {
currentTranslations-- // λ²ˆμ—­ μ²˜λ¦¬κ°€ λλ‚˜λ©΄ 1 κ°μ†Œ
}
})
app.get('/', (req, res) => {
const delayMessage = fs.existsSync('delay.txt') ? fs.readFileSync('delay.txt', 'utf8') : '0'
const statusMessage = `μ„œλ²„κ°€ κ΅¬λ™λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ λ”œλ ˆμ΄ μ‹œκ°„μ€ ${delay}ms이며, ν˜„μž¬ 처리 쀑인 λ²ˆμ—­ μš”μ²­ μˆ˜λŠ” ${currentTranslations}κ±΄μž…λ‹ˆλ‹€.`
res.send(statusMessage)
})
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`)
})