File size: 6,298 Bytes
6f3613a dfc7daf 01313c5 822a1ab 01313c5 6309d39 ccd6447 bf488ff 382c3e9 528d37a 822a1ab 5992ad9 822a1ab ccd6447 822a1ab 382c3e9 4d3381d 382c3e9 bf488ff 01313c5 dfc7daf 8ee41a1 382c3e9 822a1ab 382c3e9 8ee41a1 01313c5 822a1ab 9bad329 528d37a 3fd0f70 4d3381d 822a1ab 01313c5 382c3e9 bd34b14 |
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
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)
|