speech-to-text-pipeline/src/app_file_storage.py
2025-09-10 21:52:57 +09:00

69 lines
2.8 KiB
Python

import os
import shutil
from app_status import AppStatus
from lib.custom_logger import get_logger
logger = get_logger()
class AppFileStorage:
@classmethod
def create_output_dir(cls) -> str:
"""出力ディレクトリを作成してパスを返す"""
app_status = AppStatus()
base_dir = app_status.output_base_dir
request_id = app_status.request_id
if not request_id:
raise ValueError("Request ID is not set in AppStatus")
try:
output_dir = f"{base_dir}/{request_id}"
os.makedirs(output_dir, exist_ok=True)
logger.info(f"Output directory created at: {output_dir}")
except Exception as e:
logger.error(f"Error creating output directory: {e}")
raise
@classmethod
def copy_to_source(cls) -> str:
"""出力ディレクトリを作成してパスを返す"""
app_status = AppStatus()
# ファイル元のパス
source_file = app_status.input_filepath
# ファイルのコピー先ディレクトリ
destination_dir = app_status.source_dir
if not destination_dir:
raise ValueError("Source directory is not set in AppStatus")
try:
os.makedirs(destination_dir, exist_ok=True)
# ファイル名を取得してコピー先のフルパスを作成
filename = os.path.basename(source_file)
destination_file = os.path.join(destination_dir, filename)
# ファイルをコピー
shutil.copy2(source_file, destination_file)
logger.info(f"File copied to source directory: {destination_file}")
app_status.source_file = destination_file
return destination_file
except Exception as e:
logger.error(f"Error copying file to source directory: {e}")
raise
@classmethod
def set_source_file(cls) -> str:
app_status = AppStatus()
# ファイル元のパス
source_file = app_status.input_filepath
# ファイルのコピー先ディレクトリ
destination_dir = app_status.source_dir
if not destination_dir:
raise ValueError("Source directory is not set in AppStatus")
try:
os.makedirs(destination_dir, exist_ok=True)
# ファイル名を取得してコピー先のフルパスを作成
filename = os.path.basename(source_file)
destination_file = os.path.join(destination_dir, filename)
app_status.source_file = destination_file
return destination_file
except Exception as e:
logger.error(f"Error copying file to source directory: {e}")
raise