78 lines
2.8 KiB
Python
78 lines
2.8 KiB
Python
from argparse import Namespace
|
|
try:
|
|
from functools import cached_property
|
|
except ImportError:
|
|
cached_property = property
|
|
from os.path import join
|
|
from yaml import load as loadyaml
|
|
try:
|
|
from yaml import CSafeLoader as SafeLoader
|
|
except ImportError:
|
|
from yaml import SafeLoader
|
|
from . import _
|
|
|
|
|
|
class Config:
|
|
def __init__(self, path: str, args: Namespace = None):
|
|
with open(path, encoding="UTF-8") as f:
|
|
self._data = loadyaml(f, Loader=SafeLoader)
|
|
if self._data is None:
|
|
self._data = {}
|
|
self._args = args
|
|
|
|
@cached_property
|
|
def ask_page_size(self) -> int:
|
|
if self._args and self._args.ask_page_size is not None:
|
|
return self._args.ask_page_size
|
|
if 'ask_page_size' in self._data and isinstance(self._data['ask_page_size'], int): # noqa: E501
|
|
return self._data['ask_page_size']
|
|
return 10
|
|
|
|
@cached_property
|
|
def playback_reporting_db(self) -> str:
|
|
if self._args and self._args.playback_reporting_db:
|
|
return self._args.playback_reporting_db
|
|
if 'playback_reporting_db' in self._data and self._data['playback_reporting_db']: # noqa: E501
|
|
return self._data['playback_reporting_db']
|
|
d = self.jellyfin_data_dir
|
|
if d:
|
|
return join(d, "playback_reporting.db")
|
|
raise ValueError(_('%s not set.') % ('playback_reporting_db'))
|
|
|
|
@cached_property
|
|
def library_db(self) -> str:
|
|
if self._args and self._args.library_db:
|
|
return self._args.library_db
|
|
if 'library_db' in self._data and self._data['library_db']:
|
|
return self._data['library_db']
|
|
d = self.jellyfin_data_dir
|
|
if d:
|
|
return join(d, "library.db")
|
|
raise ValueError(_('%s not set.') % ('library_db'))
|
|
|
|
@cached_property
|
|
def jellyfin_data_dir(self) -> str | None:
|
|
if self._args and self._args.jellyfin_data_dir:
|
|
return self._args.jellyfin_data_dir
|
|
if 'jellyfin_data_dir' in self._data and self._data['jellyfin_data_dir']: # noqa: E501
|
|
return self._data['jellyfin_data_dir']
|
|
|
|
@cached_property
|
|
def jellyfin_db(self) -> str:
|
|
if self._args and self._args.jellyfin_db:
|
|
return self._args.jellyfin_db
|
|
if 'jellyfin_db' in self._data and self._data['jellyfin_db']:
|
|
return self._data['jellyfin_db']
|
|
d = self.jellyfin_data_dir
|
|
if d:
|
|
return join(d, "jellyfin.db")
|
|
raise ValueError(_('%s not set.') % ('jellyfin_db'))
|
|
|
|
@cached_property
|
|
def output_dir(self) -> str:
|
|
if self._args and self._args.output_dir:
|
|
return self._args.output_dir
|
|
if 'output_dir' in self._data and self._data['output_dir']:
|
|
return self._data['output_dir']
|
|
return 'output'
|