aboutsummaryrefslogtreecommitdiffstats
path: root/solo-tool-project/src
diff options
context:
space:
mode:
authorEddy Pedroni <epedroni@pm.me>2025-02-22 11:26:27 +0100
committerEddy Pedroni <epedroni@pm.me>2025-02-22 11:26:27 +0100
commite6f712c656365241434a71983024ac2a6e829cc8 (patch)
tree5bc9ac292834067aa3c1640165d050ff61aed399 /solo-tool-project/src
parent336ee67aa4b6c467d3d936124db16ce7dcd5a3b3 (diff)
Removed playlist class, simplified a bunch of stuff
Diffstat (limited to 'solo-tool-project/src')
-rw-r--r--solo-tool-project/src/solo_tool/playlist.py26
-rw-r--r--solo-tool-project/src/solo_tool/session_manager.py11
-rw-r--r--solo-tool-project/src/solo_tool/solo_tool.py33
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()