2025-09-10 21:52:57 +09:00

86 lines
2.6 KiB
Python

from lib.singleton import Singleton
class AppStatus(Singleton):
"""アプリケーションの状態を管理するシングルトンクラス"""
def __init__(self):
if hasattr(self, '_initialized') and self._initialized:
return # すでに初期化済みなら何もしない
self.status = {}
self._initialized = True
def reset(self):
"""状態をリセット"""
self.status.clear()
def set_status(self, key, value):
self.status[key] = value
def get_status(self, key, default=None):
return self.status.get(key, default)
@property
def input_filepath(self)-> str:
"""入力音声ファイルのパス"""
return self.get_status('input_filepath')
@input_filepath.setter
def input_filepath(self, value:str):
"""入力音声ファイルのパス"""
self.set_status('input_filepath', value)
@property
def request_id(self) -> str:
"""リクエストID"""
return self.get_status('request_id')
@request_id.setter
def request_id(self, value: str):
"""リクエストID"""
self.set_status('request_id', value)
@property
def output_base_dir(self)-> str:
"""出力ディレクトリのベースパス"""
return self.get_status('output_base_dir', default='.output')
@output_base_dir.setter
def output_base_dir(self, value:str):
"""出力ディレクトリのベースパス"""
self.set_status('output_base_dir', value)
@property
def output_dir(self)-> str:
"""出力ディレクトリのパス"""
output_dir = f"{self.output_base_dir}/{self.request_id}"
return output_dir
@property
def source_dir(self)-> str:
"""ソースディレクトリのパス"""
source_dir = f"{self.output_base_dir}/{self.request_id}/source"
return source_dir
@property
def chunk_dir(self)-> str:
"""チャンクディレクトリのパス"""
chunk_dir = f"{self.output_base_dir}/{self.request_id}/chunk"
return chunk_dir
@property
def source_file(self)-> str:
"""ソースファイルのパス"""
return self.get_status('source_file')
@source_file.setter
def source_file(self, value:str):
"""ソースファイルのパス"""
self.set_status('source_file', value)
@property
def unified_file(self)-> str:
"""統一ファイルのパス"""
return f"{self.output_dir}/unified.wav"