from flask import Flask, render_template, request, jsonify import tempfile import os import base64 from langdetect import detect from gtts import gTTS app = Flask(__name__) # Словарь с названиями языков language_names = { 'ru': 'Русский', 'en': 'Английский', 'es': 'Испанский', 'fr': 'Французский', 'de': 'Немецкий', 'it': 'Итальянский', 'pt': 'Португальский', 'ja': 'Японский', 'zh': 'Китайский', 'ko': 'Корейский', 'ar': 'Арабский', 'hi': 'Хинди', 'tr': 'Турецкий', 'nl': 'Голландский', 'sv': 'Шведский', 'fi': 'Финский', 'no': 'Норвежский', 'da': 'Датский', 'pl': 'Польский', 'cs': 'Чешский', 'sk': 'Словацкий', 'hu': 'Венгерский', 'ro': 'Румынский', 'bg': 'Болгарский', 'el': 'Греческий', 'uk': 'Украинский', 'th': 'Тайский', 'vi': 'Вьетнамский', 'id': 'Индонезийский', 'ms': 'Малайский', 'tl': 'Тагальский', 'sw': 'Суахили', 'he': 'Иврит', 'pl': 'Польский', 'et': 'Эстонский', 'lv': 'Латвийский', 'lt': 'Литовский', 'hr': 'Хорватский', 'sr': 'Сербский', 'sl': 'Словенский', 'mk': 'Македонский', 'sq': 'Албанский', 'fa': 'Персидский', 'ur': 'Урду', 'bn': 'Бенгальский', 'gu': 'Гуджарати', 'ta': 'Тамильский', 'te': 'Телугу', 'ml': 'Малаялам', 'kn': 'Каннада', 'mr': 'Маратхи', 'pa': 'Панджаби', 'ne': 'Непальский', 'si': 'Сингальский', 'my': 'Бирманский', 'km': 'Кхмерский', 'lo': 'Лаосский', 'am': 'Амхарский', 'sw': 'Суахили', 'af': 'Африкаанс', 'xh': 'Коса', 'zu': 'Зулу', 'sn': 'Шона', 'yo': 'Йоруба', 'ig': 'Игбо', 'ha': 'Хауса', 'so': 'Сомалийский', 'sq': 'Албанский', 'ka': 'Грузинский', 'hy': 'Армянский', 'az': 'Азербайджанский', 'kk': 'Казахский', 'uz': 'Узбекский', 'tk': 'Туркменский', 'ky': 'Киргизский', 'tg': 'Таджикский', 'uz': 'Узбекский', 'tk': 'Туркменский', 'ky': 'Киргизский', 'tg': 'Таджикский', 'ps': 'Пушту', 'ku': 'Курдский', 'fa': 'Персидский', 'ar': 'Арабский', 'ur': 'Урду', 'hi': 'Хинди', 'bn': 'Бенгальский', 'pa': 'Панджаби', 'gu': 'Гуджарати', 'ta': 'Тамильский', 'te': 'Телугу', 'ml': 'Малаялам', 'kn': 'Каннада', 'mr': 'Маратхи', 'ne': 'Непальский', 'si': 'Сингальский', 'my': 'Бирманский', 'km': 'Кхмерский', 'lo': 'Лаосский', 'am': 'Амхарский', 'sw': 'Суахили', 'af': 'Африкаанс', 'xh': 'Коса', 'zu': 'Зулу', 'sn': 'Шона', 'yo': 'Йоруба', 'ig': 'Игбо', 'ha': 'Хауса', 'so': 'Сомалийский', 'sq': 'Албанский', 'ka': 'Грузинский', 'hy': 'Армянский', 'az': 'Азербайджанский', 'kk': 'Казахский', 'uz': 'Узбекский', 'tk': 'Туркменский', 'ky': 'Киргизский', 'tg': 'Таджикский', 'ps': 'Пушту', 'ku': 'Курдский', 'mn': 'Монгольский', 'ja': 'Японский', 'ko': 'Корейский', } @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': password = request.form.get('password') if password != 'gg': return jsonify({"status": "error", "message": "Неверный пароль"}) input_text = request.form.get('text') language_code = detect(input_text) tts = gTTS(text=input_text, lang=language_code, slow=False) with tempfile.NamedTemporaryFile(suffix=".mp3", mode="wb+", delete=False) as temp_file: tts.save(temp_file.name) temp_file.seek(0) base64_audio = base64.b64encode(temp_file.read()).decode('utf-8') os.remove(temp_file.name) return jsonify({"status": "success", "base64_audio": base64_audio}) return render_template('index.html') @app.route('/language', methods=['GET', 'POST']) def language_detection(): if request.method == 'POST': password = request.form.get('password') input_text = request.form.get('text') language_code = detect(input_text) if language_code in language_names: language_name = language_names[language_code] return jsonify({"status": "success", "lang_code": language_code, "lang_name": language_name}) else: return jsonify({"status": "error", "message": "Неизвестный язык"}) return render_template('index.html') if __name__ == '__main__': app.run(host="0.0.0.0", port=7860, debug=False)