86 lines
2.6 KiB
Python
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"
|