Rooni commited on
Commit
636dc45
·
verified ·
1 Parent(s): 1a8d9f1

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -0
app.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, request, jsonify
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): Текст для перевода.
17
+
18
+ Returns:
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():
44
+ """
45
+ Эндпоинт для обработки POST запросов.
46
+ Ожидает текст в теле запроса и возвращает перевод или оригинал в формате JSON.
47
+ """
48
+ if request.is_json:
49
+ try:
50
+ data = request.get_json()
51
+ text = data.get('text')
52
+ if not text:
53
+ return jsonify({"error": "No text provided in request body"}), 400
54
+
55
+ translation_result = translate_text(text)
56
+
57
+ return jsonify(translation_result), 200
58
+
59
+ except Exception as e:
60
+ app.logger.error(f"Error processing request: {e}")
61
+ return jsonify({"error": f"Error processing request: {e}"}), 500
62
+ else:
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)