diff options
author | Eddy Pedroni <epedroni@pm.me> | 2025-02-22 11:26:27 +0100 |
---|---|---|
committer | Eddy Pedroni <epedroni@pm.me> | 2025-02-22 11:26:27 +0100 |
commit | e6f712c656365241434a71983024ac2a6e829cc8 (patch) | |
tree | 5bc9ac292834067aa3c1640165d050ff61aed399 /solo-tool-project/src/solo_tool | |
parent | 336ee67aa4b6c467d3d936124db16ce7dcd5a3b3 (diff) |
Removed playlist class, simplified a bunch of stuff
Diffstat (limited to 'solo-tool-project/src/solo_tool')
-rw-r--r-- | solo-tool-project/src/solo_tool/playlist.py | 26 | ||||
-rw-r--r-- | solo-tool-project/src/solo_tool/session_manager.py | 11 | ||||
-rw-r--r-- | solo-tool-project/src/solo_tool/solo_tool.py | 33 |
3 files changed, 21 insertions, 49 deletions
diff --git a/solo-tool-project/src/solo_tool/playlist.py b/solo-tool-project/src/solo_tool/playlist.py deleted file mode 100644 index 988cc04..0000000 --- a/solo-tool-project/src/solo_tool/playlist.py +++ /dev/null @@ -1,26 +0,0 @@ -class Playlist: - def __init__(self, callback): - self._songList = list() - self._currentSong = None - self._setSongCallback = callback - - def addSong(self, path): - self._songList.append(path) - - def setCurrentSong(self, index): - if index >= 0 and index < len(self._songList): - self._currentSong = index - self._setSongCallback(self._songList[index]) - - def getCurrentSong(self): - index = self._currentSong - return self._songList[index] if index is not None else None - - def getCurrentSongIndex(self): - return self._currentSong - - def getSongs(self): - return self._songList - - def clear(self): - self.__init__(self._setSongCallback) diff --git a/solo-tool-project/src/solo_tool/session_manager.py b/solo-tool-project/src/solo_tool/session_manager.py index 0896b22..a4dabc0 100644 --- a/solo-tool-project/src/solo_tool/session_manager.py +++ b/solo-tool-project/src/solo_tool/session_manager.py @@ -1,26 +1,25 @@ import json -def loadSession(file, playlist, abController): +def loadSession(file, songList, abController): jsonStr = file.read() session = json.loads(jsonStr) - playlist.clear() + songList.clear() abController.clear() for entry in session: songPath = entry["path"] abLimits = entry["ab_limits"] - playlist.addSong(songPath) + songList.append(songPath) if abLimits is not None: for l in abLimits: abController.storeLimits(l[0], l[1], songPath) -def saveSession(file, playlist, abController): - songs = playlist.getSongs() +def saveSession(file, songList, abController): session = list() - for s in songs: + for s in songList: entry = { "path": s, "ab_limits" : abController.getStoredLimits(s) diff --git a/solo-tool-project/src/solo_tool/solo_tool.py b/solo-tool-project/src/solo_tool/solo_tool.py index 743c8d5..a4c7af8 100644 --- a/solo-tool-project/src/solo_tool/solo_tool.py +++ b/solo-tool-project/src/solo_tool/solo_tool.py @@ -1,6 +1,5 @@ import os -from .playlist import Playlist from .abcontroller import ABController from .session_manager import loadSession, saveSession from .notifier import Notifier @@ -9,13 +8,17 @@ from .player_vlc import Player class SoloTool: def __init__(self, playerOverride=None): self._player = Player() if playerOverride is None else playerOverride - self._playlist = Playlist(self._playlistCallback) self._abController = ABController(enabled=False, callback=self._abControllerCallback) self._notifier = Notifier(self._player) + self._songList = [] + self._song = None - def _playlistCallback(self, path): + def _updateSong(self, index): + self._song = index + path = self._songList[index] self._player.setCurrentSong(path) self._abController.setCurrentSong(path) + self._notifier.notify(Notifier.CURRENT_SONG_EVENT, index) def _abControllerCallback(self, position): self._player.setPlaybackPosition(position) @@ -26,23 +29,20 @@ class SoloTool: @property def songList(self) -> list[str]: - return self._playlist.getSongs() + return self._songList def addSong(self, path: str) -> None: if os.path.isfile(path): - self._playlist.addSong(path) + self._songList.append(path) @property def song(self) -> int: - return self._playlist.getCurrentSongIndex() + return self._song @song.setter - def song(self, index: int) -> None: - previous = self._playlist.getCurrentSongIndex() - self._playlist.setCurrentSong(index) - new = self._playlist.getCurrentSongIndex() - if previous != new: - self._notifier.notify(Notifier.CURRENT_SONG_EVENT, new) + def song(self, new: int) -> None: + if new >= 0 and new < len(self._songList) and new != self._song: + self._updateSong(new) def storeAbLimits(self, aLimit, bLimit): self._abController.storeLimits(aLimit, bLimit) @@ -58,9 +58,8 @@ class SoloTool: self._abController.setLimits(aLimit, bLimit) def getStoredAbLimits(self): - currentSong = self._playlist.getCurrentSong() - if currentSong is not None: - return self._abController.getStoredLimits(currentSong) + if self._song is not None: + return self._abController.getStoredLimits(self.songList[self._song]) else: return list() @@ -95,11 +94,11 @@ class SoloTool: def loadSession(self, path): with open(path, "r") as f: - loadSession(f, self._playlist, self._abController) + loadSession(f, self._songList, self._abController) def saveSession(self, path): with open(path, "w") as f: - saveSession(f, self._playlist, self._abController) + saveSession(f, self._songList, self._abController) def play(self): self._player.play() |