Browse Source

отправление файлов в gigaam сразу после скачивания

dev
poturaevpetr 2 weeks ago
parent
commit
7bb64b3c42
  1. 66
      autoLoader/loader/loader.py

66
autoLoader/loader/loader.py

@ -9,7 +9,7 @@ local_path = os.path.join(os.getcwd(), FILESAPTH)
class Loader(): class Loader():
def __init__(self): def __init__(self):
self.call_types = ['in'] self.call_types = ['in']
pass self.loaded_files = [] # Список загруженных файлов
def filter_call(self, filename: str): def filter_call(self, filename: str):
if filename.split("-")[0] in self.call_types: if filename.split("-")[0] in self.call_types:
@ -30,6 +30,61 @@ class Loader():
return True 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): def load(self):
# Проверяем БД перед началом работы # Проверяем БД перед началом работы
if not self.check_database(): if not self.check_database():
@ -85,7 +140,10 @@ class Loader():
audio.file_size = file_size audio.file_size = file_size
db.add(audio) db.add(audio)
# commit произойдёт автоматически при выходе из контекста db.flush() # Чтобы получить audio.id
# Сохраняем в список для последующей отправки
self.loaded_files.append(audio)
print(f"✅ Файл {file} сохранён в БД") print(f"✅ Файл {file} сохранён в БД")
@ -104,3 +162,7 @@ class Loader():
sftp_client.close() sftp_client.close()
ssh_client.close() ssh_client.close()
# После загрузки всех файлов отправляем на распознавание
print(f"\n📊 Загружено файлов: {len(self.loaded_files)}")
self.send_to_recognition()

Loading…
Cancel
Save