Rooni commited on
Commit
b251148
·
verified ·
1 Parent(s): 1c5d6df

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -33
app.py CHANGED
@@ -2,27 +2,15 @@ from flask import Flask, request, jsonify
2
  from deep_translator import GoogleTranslator
3
  from langdetect import detect, LangDetectException
4
  import logging
5
- from flask_caching import Cache
6
- import hashlib
7
- import datetime
8
 
9
  app = Flask(__name__)
10
 
11
- # Настройка кэширования
12
- cache = Cache(app, config={'CACHE_TYPE': 'simple'})
13
-
14
  # Настройка логирования
15
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
16
 
17
-
18
- def generate_cache_key(text):
19
- """Генерирует ключ для кэша на основе текста."""
20
- return hashlib.md5(text.encode('utf-8')).hexdigest()
21
-
22
  def translate_text(text):
23
  """
24
- Определяет язык текста и переводит его на английский, если необходимо,
25
- используя кэширование результатов.
26
 
27
  Args:
28
  text (str): Текст для перевода.
@@ -31,40 +19,25 @@ def translate_text(text):
31
  dict: Словарь с результатом перевода или оригинальным текстом, а также информацией об ошибке.
32
  Формат: {"result": "переведенный текст", "original": "исходный текст", "error": null/сообщение об ошибке}
33
  """
34
- cache_key = generate_cache_key(text)
35
-
36
- cached_result = cache.get(cache_key)
37
- if cached_result:
38
- app.logger.info(f"Cache hit for key: {cache_key}")
39
- return cached_result
40
-
41
  try:
42
  language = detect(text)
43
  app.logger.info(f"Detected language: {language}")
44
  except LangDetectException as e:
45
  app.logger.error(f"Error detecting language: {e}")
46
- result = {"result": text, "original": text, "error": f"Error detecting language: {e}"}
47
- cache.set(cache_key, result, timeout=86400) # Кэшируем ошибку на 24 часа
48
- return result
49
 
50
  if language != 'en':
51
  try:
52
  translator = GoogleTranslator(source=language, target='en')
53
  translated_text = translator.translate(text)
54
  app.logger.info(f"Translated from {language} to en")
55
- result = {"result": translated_text, "original": text, "error": None}
56
- cache.set(cache_key, result, timeout=86400)
57
- return result
58
  except Exception as e:
59
  app.logger.error(f"Error translating prompt: {e}")
60
- result = {"result": text, "original": text, "error": f"Error translating text: {e}"}
61
- cache.set(cache_key, result, timeout=86400) # Кэшируем ошибку на 24 часа
62
- return result
63
  else:
64
  app.logger.info("Text is already in English")
65
- result = {"result": text, "original": text, "error": None}
66
- cache.set(cache_key, result, timeout=86400)
67
- return result
68
 
69
  @app.route('/', methods=['POST'])
70
  def translate_endpoint():
@@ -90,4 +63,4 @@ def translate_endpoint():
90
  return jsonify({"error": "Request must be in json format"}), 400
91
 
92
  if __name__ == '__main__':
93
- app.run(host='0.0.0.0', port=7860, debug=True)
 
2
  from deep_translator import GoogleTranslator
3
  from langdetect import detect, LangDetectException
4
  import logging
 
 
 
5
 
6
  app = Flask(__name__)
7
 
 
 
 
8
  # Настройка логирования
9
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
10
 
 
 
 
 
 
11
  def translate_text(text):
12
  """
13
+ Определяет язык текста и переводит его на английский, если необходимо.
 
14
 
15
  Args:
16
  text (str): Текст для перевода.
 
19
  dict: Словарь с результатом перевода или оригинальным текстом, а также информацией об ошибке.
20
  Формат: {"result": "переведенный текст", "original": "исходный текст", "error": null/сообщение об ошибке}
21
  """
 
 
 
 
 
 
 
22
  try:
23
  language = detect(text)
24
  app.logger.info(f"Detected language: {language}")
25
  except LangDetectException as e:
26
  app.logger.error(f"Error detecting language: {e}")
27
+ return {"result": text, "original": text, "error": f"Error detecting language: {e}"}
 
 
28
 
29
  if language != 'en':
30
  try:
31
  translator = GoogleTranslator(source=language, target='en')
32
  translated_text = translator.translate(text)
33
  app.logger.info(f"Translated from {language} to en")
34
+ return {"result": translated_text, "original": text, "error": None}
 
 
35
  except Exception as e:
36
  app.logger.error(f"Error translating prompt: {e}")
37
+ return {"result": text, "original": text, "error": f"Error translating text: {e}"}
 
 
38
  else:
39
  app.logger.info("Text is already in English")
40
+ return {"result": text, "original": text, "error": None}
 
 
41
 
42
  @app.route('/', methods=['POST'])
43
  def translate_endpoint():
 
63
  return jsonify({"error": "Request must be in json format"}), 400
64
 
65
  if __name__ == '__main__':
66
+ app.run(host='0.0.0.0', port=7860, debug=True)