music-kraken-core/src/music_kraken/objects/target.py

36 lines
992 B
Python
Raw Normal View History

2023-02-25 21:16:32 +00:00
from typing import Optional
from pathlib import Path
from ..utils import shared
from .parents import DatabaseObject
class Target(DatabaseObject):
"""
create somehow like that
```python
# I know path is pointless, and I will change that (don't worry about backwards compatibility there)
Target(file="song.mp3", path="~/Music/genre/artist/album")
```
"""
def __init__(
self,
file: str = None,
path: str = None,
_id: str = None,
dynamic: bool = False,
relative_to_music_dir: bool = False
) -> None:
super().__init__(_id=_id, dynamic=dynamic)
self._file: Path = Path(file)
self._path = path
self.is_relative_to_music_dir: bool = relative_to_music_dir
@property
def file_path(self) -> Path:
if self.is_relative_to_music_dir:
return Path(shared.MUSIC_DIR, self._path, self._file)
return Path(self._path, self._file)