aboutsummaryrefslogtreecommitdiffstats
path: root/solo-tool-project/src/solo_tool/session_manager.py
blob: 718e8641debc9b3ab13a1da2e5d552a32fa8116c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import json

class SessionManager:
    def __init__(self, playlist, abController):
        self._playlist = playlist
        self._abController = abController

    def addSong(self, path):
        self._playlist.addSong(path)

    def storeLimits(self, aLimit, bLimit):
        self._abController.storeLimits(aLimit, bLimit)

    def loadSession(self, file):
        jsonStr = file.read()
        session = json.loads(jsonStr)

        self._playlist.clear()
        self._abController.clear()

        for entry in session:
            songPath = entry["path"]
            abLimits = entry["ab_limits"]
            self._playlist.addSong(songPath)

            if abLimits is not None:
                for l in abLimits:
                    self._abController.storeLimits(l[0], l[1], songPath)
            
    def saveSession(self, file):
        songs = self._playlist.getSongs()
        session = list()

        for s in songs:
            entry = {
                "path": s,
                "ab_limits" : self._abController.getStoredLimits(s)
            }
            session.append(entry)

        file.write(json.dumps(session))