audio / app.py
MiklX's picture
Update app.py
ccd6447
raw
history blame
6.3 kB
from flask import Flask, render_template, request, jsonify
import tempfile
import os
import subprocess
from langdetect import detect
from gtts import gTTS
import requests
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': 'Корейский',
}
def upload_to_keep_sh(file_path):
with open(file_path, 'rb') as file:
try:
response = requests.post("https://free.keep.sh", files={"file": file})
if response.status_code == 200:
return response.text.strip()
else:
print(f"Ошибка при загрузке файла: {response.status_code}")
return None
except requests.RequestException as e:
print(f"Request Exception: {e}")
return None
@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", delete=False) as temp_file:
tts.save(temp_file.name)
temp_file_path = temp_file.name
# Загрузка файла на Keep.sh
file_url = upload_to_keep_sh(temp_file_path)
os.remove(temp_file_path)
if file_url:
return jsonify({"status": "success", "url": file_url})
else:
return jsonify({"status": "error", "message": "Ошибка при загрузке файла"})
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)