Сервис для хранения файлов аудио, индексации файлов, записи и выдачи результатов распознавания
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

58 lines
2.0 KiB

from autoLoader.config import FILESAPTH
from autoLoader.loader import ConnectorSFTP
import datetime, os
from autoLoader.database import *
local_path = os.path.join(os.getcwd(), FILESAPTH)
class Loader():
def __init__(self):
self.call_types = ['in']
pass
def filter_call(self, filename: str):
if filename.split("-")[0] in self.call_types:
return True
return False
def load(self):
date_now = datetime.datetime.now()# - datetime.timedelta(days=1)
remote_path = f"/{date_now.strftime('%Y/%m/%d')}"
connector = ConnectorSFTP()
connector.connect(remote_path=remote_path)
sftp_client = connector.sftp
ssh_client = connector.ssh
if sftp_client is None or ssh_client is None:
print("Не удалось подключиться к SFTP. Завершение работы.")
exit(1)
db = get_db()
try:
listdir = sftp_client.listdir()
os.makedirs(local_path, exist_ok = True)
diskdir = os.listdir(local_path)
for file in listdir:
if self.filter_call(filename=file):
remote_file = f"{file}".lstrip('/')
filepath = os.path.join(local_path, file)
try:
sftp_client.get(remote_file, filepath) # Скачиваем файл
audio = Audio()
audio.index_date = datetime.datetime.now()
audio.filename = file
db.session.add(audio)
db.session.commit()
print(f"Скачан файл: {remote_file}")
except Exception as e:
print(f"Ошибка при скачивании файла {remote_file}: {e}")
finally:
# Закрываем соединения
sftp_client.close()
ssh_client.close()