59 lines
2.9 KiB
Python
Executable File
59 lines
2.9 KiB
Python
Executable File
import os
|
|
from io import BytesIO
|
|
from functions.convert import Converter
|
|
from aiogram import types, exceptions
|
|
|
|
|
|
async def get_audio_messages_func(message: types.Message, logger, bot, model) -> None:
|
|
"""
|
|
Функция выкачивает файл, потом конвертирует его в текст, потом логирует
|
|
|
|
:param message: types.Message - объект сообщения
|
|
:param logger: - объект логера
|
|
: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
|
|
elif message.content_type in ['video']:
|
|
file_id = message.video.file_id
|
|
elif message.content_type in ['video_note']:
|
|
file_id = message.video_note.file_id
|
|
elif message.content_type in ['document']:
|
|
file_id = message.document.file_id
|
|
elif message.content_type in ['audio']:
|
|
file_id = message.audio.file_id
|
|
else:
|
|
file_id = message.video_note.file_id
|
|
file_name = "config/" + str(message.message_id) + '.ogg' # создаю file_name
|
|
# достаю имя человека
|
|
if message.chat.first_name:
|
|
name = message.chat.first_name
|
|
else:
|
|
name = message.chat.title
|
|
with open(file_name, 'wb') as new_file: # открываю файл для записи
|
|
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,
|
|
"Файл слишком большой, попробуйте расшифровку у нас на сайте. "
|
|
"На сайте нет ограничений на размер файла. Ссылка на сайт: будет позже"
|
|
)
|