From 7bb64b3c429ab00c1fb935572bd70dbbf0e2f14d Mon Sep 17 00:00:00 2001 From: poturaevpetr Date: Thu, 25 Dec 2025 23:01:46 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=B2=20gigaam=20=D1=81=D1=80=D0=B0=D0=B7=D1=83=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=20=D1=81=D0=BA=D0=B0=D1=87=D0=B8=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- autoLoader/loader/loader.py | 66 +++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/autoLoader/loader/loader.py b/autoLoader/loader/loader.py index d8a6ea3..cc74b4a 100644 --- a/autoLoader/loader/loader.py +++ b/autoLoader/loader/loader.py @@ -9,7 +9,7 @@ local_path = os.path.join(os.getcwd(), FILESAPTH) class Loader(): def __init__(self): self.call_types = ['in'] - pass + self.loaded_files = [] # Список загруженных файлов def filter_call(self, filename: str): if filename.split("-")[0] in self.call_types: @@ -30,6 +30,61 @@ class Loader(): return True + def send_to_recognition(self, limit: int = None): + """ + Отправляет загруженные файлы на распознавание + + Args: + limit: Максимальное количество файлов для отправки + """ + if not self.loaded_files: + print("⏭️ Нет файлов для отправки на распознавание") + return + + from autoLoader.loader import RecognitionChecker + + print(f"\n🎤 Отправка {len(self.loaded_files)} файлов на распознавание...") + + checker = RecognitionChecker() + + # Проверяем доступность API + if not checker.check_api_availability(): + print("❌ GigaAM API недоступен. Пропускаем распознавание.") + return + + # Проверяем БД + if not checker.check_database(): + print("❌ База данных не готова. Пропускаем распознавание.") + return + + # Получаем файлы без заключения + files_without_conclusion = checker.get_files_without_conclusion(limit=limit) + + if not files_without_conclusion: + print("✅ Все файлы уже имеют заключения") + return + + # Отправляем только что загруженные файлы + sent_count = 0 + for audio in self.loaded_files: + # Проверяем, есть ли у файла заключение + with get_db_session() as db: + from autoLoader.database import AiConclusion + existing_conclusion = db.query(AiConclusion).filter( + AiConclusion.audio_id == audio.id + ).first() + + if existing_conclusion: + print(f"⏭️ Файл {audio.filename} уже имеет заключение") + continue + + # Отправляем на распознавание + success = checker.send_to_recognition(audio) + if success: + sent_count += 1 + + print(f"✅ Отправлено {sent_count} из {len(self.loaded_files)} файлов на распознавание") + def load(self): # Проверяем БД перед началом работы if not self.check_database(): @@ -85,7 +140,10 @@ class Loader(): audio.file_size = file_size db.add(audio) - # commit произойдёт автоматически при выходе из контекста + db.flush() # Чтобы получить audio.id + + # Сохраняем в список для последующей отправки + self.loaded_files.append(audio) print(f"✅ Файл {file} сохранён в БД") @@ -104,3 +162,7 @@ class Loader(): sftp_client.close() ssh_client.close() + # После загрузки всех файлов отправляем на распознавание + print(f"\n📊 Загружено файлов: {len(self.loaded_files)}") + self.send_to_recognition() +