aboutsummaryrefslogtreecommitdiffstats
path: root/solo-tool-project/src/solo_tool
diff options
context:
space:
mode:
Diffstat (limited to 'solo-tool-project/src/solo_tool')
-rw-r--r--solo-tool-project/src/solo_tool/session_manager.py55
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)