36 lines
992 B
Python
36 lines
992 B
Python
|
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)
|