File size: 1,989 Bytes
12d5b92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7b3ad18
 
 
 
 
 
 
 
 
12d5b92
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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 = 0; 
const delayIncrement = 100; 
const maxDelay = 5000; 

if (fs.existsSync('delay.txt')) {
  delay = parseInt(fs.readFileSync('delay.txt', 'utf8'));
}

console.log('File system loaded')

app.post('/translate', async (req, res) => {

  console.log('Translate start')

  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);
  } catch (error) {
    if (error.response && error.response.status === 429) {

      delay += delayIncrement;
      if (delay > maxDelay) {
        delay = maxDelay;
      }
      fs.writeFileSync('delay.txt', delay.toString());
      console.log(`429 μ—λŸ¬ λ°œμƒ. λ”œλ ˆμ΄ 증가: ${delay}ms`);
    }
    res.status(500).json({ error: 'Translation failed' });
  }
});

app.get('/', (req, res) => {
  res.send('μ„œλ²„κ°€ κ΅¬λ™λ˜μ—ˆμŠ΅λ‹ˆλ‹€.');

  if (fs.existsSync('delay.txt')) {
    const currentDelay = fs.readFileSync('delay.txt', 'utf8');
    res.send(`μ„œλ²„κ°€ κ΅¬λ™λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ λ”œλ ˆμ΄ μ‹œκ°„μ€ ${currentDelay}msμž…λ‹ˆλ‹€.`);
  } else {
    // 파일이 μ—†λ‹€λ©΄ λ”œλ ˆμ΄κ°€ 0으둜 μ„€μ •λ˜μ–΄ μžˆλ‹€κ³  κ°€μ •ν•˜κ³  λ©”μ‹œμ§€λ₯Ό λ³΄λƒ…λ‹ˆλ‹€.
    res.send('μ„œλ²„κ°€ κ΅¬λ™λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ λ”œλ ˆμ΄ μ‹œκ°„μ€ 0msμž…λ‹ˆλ‹€.');
  }
  
});

app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});