From acce0b14f521a62a2d574d7c6d7068f7b78ec854 Mon Sep 17 00:00:00 2001 From: dmitrium12 Date: Sat, 30 Dec 2023 19:23:20 +0700 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B8?= =?UTF-8?q?=D0=B7-=D0=B7=D0=B0=20=D1=81=D0=BB=D0=B8=D1=88=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=B0,=20=D0=B0=20=D1=82=D0=B0=D0=BA?= =?UTF-8?q?=20=D0=B6=D0=B5=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=BD?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D1=80?= =?UTF-8?q?=D0=B0=D1=81=D0=BF=D0=BE=D0=B7=D0=BD=D0=B0=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BD=D0=B0=20=D0=BC=D0=B8=D0=BA=D1=80=D0=BE=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- functions/convert.py | 19 ++++++++++++---- functions/get_audio_messages_func.py | 34 ++++++++++++++++++---------- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/functions/convert.py b/functions/convert.py index e5af590..c8c1a51 100755 --- a/functions/convert.py +++ b/functions/convert.py @@ -12,7 +12,7 @@ class Converter: self.message = message self.model = model - def audio_to_text(self) -> str: + def audio_to_text(self) -> dict: """ Основная функция @@ -29,10 +29,21 @@ class Converter: if response.status_code == 200: return response.json() else: - return 'Не удалось получить текст.' + return { + "timestamp": " ", + "final_text": "Не удалось получить текст." + } else: result = self.model.transcribe(self.path_to_file) - return result["text"] + return { + "timestamp": "Тут такое не работает, " + "жди пока главный сервер поднимется", + "final_text": result["text"] + } except requests.ConnectionError: result = self.model.transcribe(self.path_to_file) - return result["text"] + return { + "timestamp": "Тут такое не работает, " + "жди пока главный сервер поднимется", + "final_text": result["text"] + } diff --git a/functions/get_audio_messages_func.py b/functions/get_audio_messages_func.py index 92f3d0d..c6f4831 100755 --- a/functions/get_audio_messages_func.py +++ b/functions/get_audio_messages_func.py @@ -1,8 +1,7 @@ import os from io import BytesIO - from functions.convert import Converter -from aiogram import types +from aiogram import types, exceptions async def get_audio_messages_func(message: types.Message, logger, bot, model) -> None: @@ -36,13 +35,24 @@ async def get_audio_messages_func(message: types.Message, logger, bot, model) -> else: name = message.chat.title with open(file_name, 'wb') as new_file: # открываю файл для записи - 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, model) # запуск конвертора - message_text = converter.audio_to_text() # получаю текст из конвертора - logger.info(f"Чат {name} (ID: {message.chat.id}) обработал файл {file_name}, " - f"сервисом {converter.service}") # записываю всё в logger - file = BytesIO(message_text['timestamp'].encode('utf-8')) - file.name = 'timestamp.txt' - await bot.send_document(chat_id=message.chat.id, document=file, caption=f"От компа:\n{message_text['final_text']}") + try: + file = await bot.get_file(file_id) # ссылка для скачивая файла + file_dow = await bot.download_file(file.file_path) # скачанный файл + 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 + file = BytesIO(message_text['timestamp'].encode('utf-8')) + file.name = 'timestamp.txt' + await bot.send_document( + chat_id=message.chat.id, + document=file, + caption=f"От компа:\n{message_text['final_text']}" + ) + new_file.write(file_dow.getvalue()) # записываю + except exceptions.FileIsTooBig: + await bot.send_message( + message.chat.id, + "Файл слишком большой, попробуйте расшифровку у нас на сайте. " + "На сайте нет ограничений на размер файла. Ссылка на сайт: будет позже" + )