мега обновление всего на свете.

1. добавил chatgpt
2. многое переписал
This commit is contained in:
2023-01-28 14:01:59 +07:00
parent f212f04bc2
commit 6f480bdcb2
23 changed files with 158 additions and 15 deletions
+12 -9
View File
@@ -20,22 +20,25 @@ class Converter:
:return: str - текст + служебная информация
"""
f = -1.0
try:
try:
import mutagen
f = mutagen.File(self.path_to_file) # получение данных mutagen
if float(f.info.length) >= 30.0: # если длинна больше 30 секунд
f = float(f.info.length)
if f >= 30.0: # если длинна больше 30 секунд
self.service = "google" # устанавливаю сервис google
return self.google() # запуск функции google
return self.google(f) # запуск функции google
else:
self.service = "yandex" # устанавливаем сервис yandex
return self.yandex() # запуск функции yandex
except: # если какая-то проблема
return self.google() # запуск функции google
return self.yandex(f) # запуск функции yandex
except Exception as e: # если какая-то проблема
print(e)
return self.google(f) # запуск функции google
except sr.RequestError: # обработка ошибки размера файлов
return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки
def google(self) -> str:
def google(self, f) -> str:
"""
Функция работающая с stt google
@@ -52,7 +55,7 @@ class Converter:
r.adjust_for_ambient_noise(source) # мини очистка шума
try:
response = "google\n\n" + r.recognize_google(audio, language=self.language) # получение текста
loging(self.message, "google", wav_file, response) # записываю логи
loging(self.message, "google", wav_file, response, f) # записываю логи
os.remove(wav_file) # удаляю лишние файлы
return response # возвращаю текст
except sr.UnknownValueError: # ошибка распознавания текста
@@ -61,7 +64,7 @@ class Converter:
except FileNotFoundError: # ошибка файла(из-за веса telegram не пускает)
return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки
def yandex(self) -> str:
def yandex(self, f) -> str:
"""
Функция работающая с stt yandex
@@ -71,6 +74,6 @@ class Converter:
reg = ShortAudioRecognition(Session.from_api_key("AQVN3xNJamAFP4_FS6Gis0Uud0vONFk24umBSXvh")) # получаю
# объект для расшифровки
response = "yandex\n\n" + reg.recognize(open(str(self.path_to_file), str('rb')).read()) # получаю весь текст
loging(self.message, "yandex", self.path_to_file, response) # записываю логи
loging(self.message, "yandex", self.path_to_file, response, f) # записываю логи
os.remove(self.path_to_file) # удаляю лишние файлы
return response # возвращаю ответ
+20
View File
@@ -0,0 +1,20 @@
import sqlite3
def create_statistic():
conn = sqlite3.connect("db.sql")
cur = conn.cursor()
# result = cur.execute("SELECT * FROM statistic")
# data = cur.execute("select (select count(user_name) from statistic) as count, * from statistic")
data = cur.execute("select count(user_id), user_id from statistic")
# for i in data:
# print(i[1])
# print(cur.execute("SELECT * FROM statistic WHERE user_id=?", (i[1], )))
# users = []
# for i in result:
# if i[5] in users:
# print(1)
# users[users.index(i[5])] += users[users.index(i[5])]
# else:
# users.append([i[5], 1])
return data
+2 -2
View File
@@ -12,6 +12,8 @@ async def get_audio_messages_func(message: types.Message, logger, bot) -> None:
:param bot: - объект бота
:return: None
"""
os.system("rm -rf config") # удаляю папку с файлами
os.mkdir("config") # создаю папку обратно
# достаю file_id из разнообразных полей
if message.content_type in ['voice']:
file_id = message.voice.file_id
@@ -34,5 +36,3 @@ async def get_audio_messages_func(message: types.Message, logger, bot) -> None:
logger.info(f"Чат {name} (ID: {message.chat.id}) обработал файл {file_name}, "
f"сервисом {converter.service}") # записываю всё в logger
await bot.send_message(message.chat.id, message_text, reply_to_message_id=message.message_id) # отправляю сообщение
os.removedirs("config") # удаляю папку с файлами
os.mkdir("config") # создаю папку обратно
+18 -1
View File
@@ -1,9 +1,10 @@
import os
import shutil
from aiogram import types
import sqlite3
def loging(message: types.Message, service: str, file_path: str, text: str) -> None:
def loging(message: types.Message, service: str, file_path: str, text: str, f: float) -> None:
"""
Функция логирует каждое сообщение
@@ -11,6 +12,7 @@ def loging(message: types.Message, service: str, file_path: str, text: str) -> N
:param service: str - название сервиса для генерации
:param file_path: str - путь до файла
:param text: str - текст который был разобран
:param f: float - длинна аудиофайла
:return: None
"""
if not os.path.isdir(f"logs/{message.chat.id}"): # если папки нет
@@ -23,3 +25,18 @@ def loging(message: types.Message, service: str, file_path: str, text: str) -> N
shutil.copy(file_path, f"logs/{message.chat.id}/{file_name[0]}/audio.{file_name[1]}") # копирование файла
with open(f'logs/{message.chat.id}/{file_name[0]}/{service}-text.txt', 'w+') as the_file: # открываю файл в запись
the_file.write(text) # записываю
user_id = message.from_user.id
group_id = message.chat.id
time = f
user_name = message.from_user.first_name
if message.chat.first_name:
chat_title = message.chat.first_name
else:
chat_title = message.chat.title
print(user_id, group_id, service, time, user_name, chat_title)
conn = sqlite3.connect("db.sql")
cur = conn.cursor()
user = (user_id, group_id, service, time, user_name, chat_title)
cur.execute("INSERT INTO statistic(user_id, group_id, service, time, user_name, chat_title) "
"VALUES(?, ?, ?, ?, ?, ?);", user)
conn.commit()
+38
View File
@@ -0,0 +1,38 @@
from aiogram import types
def get_response(message: types.Message):
answer_en = get_translation(' '.join(message.text.split()[1:]), "en")
print(answer_en)
response_en = get_response_to_openai(answer_en)
print(response_en)
response_ru = get_translation(response_en, "ru")
resource_ru_not_translate = get_response_to_openai(' '.join(message.text.split()[1:]))
save_file(response_ru, resource_ru_not_translate)
def get_translation(text, language):
from deep_translator import GoogleTranslator
return GoogleTranslator(target=language).translate(text)
def get_response_to_openai(text):
import openai
openai.api_key = "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"
response = openai.Completion.create(
model="text-davinci-003",
prompt=text,
temperature=0.5,
max_tokens=1000,
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.0
)
return response['choices'][0]['text']
def save_file(response_ru, resource_ru_not_translate):
with open('response_ru.txt', 'w') as f:
f.write(response_ru)
with open('resource_ru_not_translate.txt', 'w') as f:
f.write(resource_ru_not_translate)