add computing connect
This commit is contained in:
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
+27
-14
@@ -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
Executable
+28
@@ -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)
|
||||
Regular → Executable
+2
-2
@@ -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
@@ -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
@@ -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')
|
||||
|
||||
Executable
+26
@@ -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
Reference in New Issue
Block a user