отправление файлов в gigaam сразу после скачивания
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user