diff options
Diffstat (limited to 'solo-tool-project/src/solo_tool')
-rw-r--r-- | solo-tool-project/src/solo_tool/session_manager.py | 55 |
1 files changed, 34 insertions, 21 deletions
diff --git a/solo-tool-project/src/solo_tool/session_manager.py b/solo-tool-project/src/solo_tool/session_manager.py index cd5ebf7..4fae19f 100644 --- a/solo-tool-project/src/solo_tool/session_manager.py +++ b/solo-tool-project/src/solo_tool/session_manager.py @@ -1,30 +1,43 @@ +from glob import glob import json +from pathlib import Path from . import SoloTool -def loadSession(file: str, songPool: str, player=None) -> SoloTool: - with open(file, "r") as f: - session = json.load(f) +class FileSystemSessionManager: + def __init__(self, songPool: str, sessionPath: str): + self._songPool = Path(songPool) + self._sessionPath = Path(sessionPath) - st = SoloTool(songPool, player=player) + def getSessions(self) -> list[str]: + return [Path(f).stem for f in glob(f"{self._sessionPath}/*.json")] - for i, entry in enumerate(session): - songPath = entry["path"] - keyPoints = entry["key_points"] + def loadSession(self, key: str, player=None) -> SoloTool: + with open(self._sessionPath / f"{key}.json", "r") as f: + session = json.load(f) - st.addSong(songPath) - st._keyPoints[i] = keyPoints + st = SoloTool(self._songPool, player=player) - return st - -def saveSession(soloTool: SoloTool, file: str) -> None: - session = [] + for i, entry in enumerate(session): + songPath = entry["path"] + keyPoints = entry["key_points"] - for i, song in enumerate(soloTool.songs): - entry = { - "path": song, - "key_points" : soloTool._keyPoints[i] - } - session.append(entry) + st.addSong(songPath) + st._keyPoints[i] = keyPoints - with open(file, "w") as f: - json.dump(session, f) + return st + + def saveSession(self, soloTool: SoloTool, key: str) -> None: + session = [] + + for i, song in enumerate(soloTool.songs): + entry = { + "path": song, + "key_points" : soloTool._keyPoints[i] + } + session.append(entry) + + with open(self._sessionPath / f"{key}.json", "w") as f: + json.dump(session, f) + +def getSessionManager(songPool: str, sessionPath: str) -> FileSystemSessionManager: + return FileSystemSessionManager(songPool, sessionPath) |