add computing connect

This commit is contained in:
2023-11-11 09:47:34 +07:00
parent 8c04c67c27
commit ebd1b6002b
42 changed files with 280 additions and 121 deletions
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
View File
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
View File
View File
View File
Regular → Executable
+27 -14
View File
@@ -2,17 +2,19 @@ import subprocess
import speech_recognition as sr
import os
from functions.loging import loging
import requests
class Converter:
"""
Этот класс выполняет главную функцию, конвертирует голос в текст
"""
def __init__(self, path_to_file: str, message, language: str = "ru-RU"):
def __init__(self, path_to_file: str, message, model, language: str = "ru-RU"):
self.language = language
self.path_to_file = path_to_file
self.service = None
self.message = message
self.model = model
def audio_to_text(self) -> str:
"""
@@ -20,21 +22,32 @@ class Converter:
:return: str - текст + служебная информация
"""
f = -1.0
# f = -1.0
try:
try:
import mutagen
f = mutagen.File(self.path_to_file) # получение данных mutagen
f = float(f.info.length)
if f >= 30.0: # если длинна больше 30 секунд
self.service = "google" # устанавливаю сервис google
return self.google(f) # запуск функции google
r = requests.get("http://192.168.0.108:5000/ping")
if r.status_code == 200:
response = requests.post("http://192.168.0.108:5000/decrypt_audio",
files={"file": open(self.path_to_file, "rb").read()})
if response.status_code == 200:
return f"От компа:\n{response.text.replace('"', '')}"
else:
self.service = "yandex" # устанавливаем сервис yandex
return self.yandex(f) # запуск функции yandex
except Exception as e: # если какая-то проблема
print(e)
return self.google(f) # запуск функции google
return 'Не удалось получить текст.'
else:
result = self.model.transcribe(self.path_to_file)
return result["text"]
# try:
# import mutagen
# f = mutagen.File(self.path_to_file) # получение данных mutagen
# f = float(f.info.length)
# if f >= 30.0: # если длинна больше 30 секунд
# self.service = "google" # устанавливаю сервис google
# return self.google(f) # запуск функции google
# else:
# self.service = "yandex" # устанавливаем сервис yandex
# return self.yandex(f) # запуск функции yandex
# except Exception as e: # если какая-то проблема
# print(e)
# return self.google(f) # запуск функции google
except sr.RequestError: # обработка ошибки размера файлов
return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки
Regular → Executable
View File
+28
View File
@@ -0,0 +1,28 @@
import json
def load_data():
try:
with open('users.json', 'r') as f:
return json.load(f)
except FileNotFoundError:
return {'users': [], 'chats': []}
def save_data(data_type, data_id=None):
data = load_data()
if data_id is None:
if 'static' not in data:
data['static'] = {'audio_resive': 0, 'chatGPT': 0}
if 'audio_resive' not in data['static']:
data['static'][data_type] = 0
if 'chatGPT' not in data['static']:
data['static']['chatGPT'] = 0
data['static'][data_type] += 1
with open('users.json', 'w') as f:
json.dump(data, f, indent=4)
else:
if data_id not in data[data_type]:
data[data_type].append(data_id)
with open('users.json', 'w') as f:
json.dump(data, f, indent=4)
+2 -2
View File
@@ -3,7 +3,7 @@ from functions.convert import Converter
from aiogram import types
async def get_audio_messages_func(message: types.Message, logger, bot) -> None:
async def get_audio_messages_func(message: types.Message, logger, bot, model) -> None:
"""
Функция выкачивает файл, потом конвертирует его в текст, потом логирует
@@ -31,7 +31,7 @@ async def get_audio_messages_func(message: types.Message, logger, bot) -> None:
file = await bot.get_file(file_id) # ссылка для скачивая файла
file_dow = await bot.download_file(file.file_path) # скачанный файл
new_file.write(file_dow.getvalue()) # записываю
converter = Converter(file_name, message) # запуск конвертора
converter = Converter(file_name, message, model) # запуск конвертора
message_text = converter.audio_to_text() # получаю текст из конвертора
logger.info(f"Чат {name} (ID: {message.chat.id}) обработал файл {file_name}, "
f"сервисом {converter.service}") # записываю всё в logger
Regular → Executable
-7
View File
@@ -35,10 +35,3 @@ def loging(message: types.Message, service: str, file_path: str, text: str, f: f
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()
Regular → Executable
+1 -1
View File
@@ -30,7 +30,7 @@ async def get_response_to_openai(message: types.Message, bot):
presence_penalty=0.0
)
await bot.send_message(message.chat.id, f"ChatGPT\n{response['choices'][0]['message']['content']}",
parse_mode=None, reply_to_message_id=message.message_id)
parse_mode="Markdown", reply_to_message_id=message.message_id)
except Exception as e:
print(e)
conn = sqlite3.connect('db.sql')
+26
View File
@@ -0,0 +1,26 @@
from aiogram import types
from functions.file_data import load_data
async def start_stat(message: types.Message):
data = load_data()
send_message = f"""
Здравствуйте, {message.from_user.username}
➖➖➖➖➖➖➖➖➖
Мои боты созданы чтобы помогать вам с голосовыми сообщениями, а так же получить доступ к ChatGPT
➖➖➖➖➖➖➖➖➖
1️⃣ Отправив этому боту голосовое сообщение, кружок или что-то похожее вы получите его расшифровку
2️⃣ Добавив бота в чат и дав ему права читать и писать сообщение, он станет переводит все голосовые сообщения
, кружки и тому подобное
3️⃣ Так же вы можете написать боту @db_ChatGPT_bot команду /start и он расскажет как пользоваться ChatGPT из России
➖➖➖➖➖➖➖➖➖
🆓 Весь функционал ботов бесплатный
➖➖➖➖➖➖➖➖➖
Статистика:
Чатов в которых находится бот: {len(data["chats"])}
Пользователей воспользовавшихся ботом: {len(data["audio"])}
Пользователей запустивших бота: {len(data["start"])}
Ботом воспользовались {data["static"]["audio_resive"]} раз
ChatGPT ботом воспользовались {data["static"]["chatGPT"]} раз
"""
await message.reply(send_message)
Regular → Executable
View File