curds: Move playlist.peek() out of the Root node
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
1943a7bb08
commit
d25a026282
|
@ -5,6 +5,7 @@ from . import root
|
|||
from .. import data
|
||||
from .. import notify
|
||||
from .. import trak
|
||||
import random
|
||||
import threading
|
||||
|
||||
Library = library.LibraryPlaylist
|
||||
|
@ -35,6 +36,20 @@ def next():
|
|||
Root.lookup("Previous").add(Track)
|
||||
return Track
|
||||
|
||||
def peek(n):
|
||||
res = [ ]
|
||||
with Lock:
|
||||
state = random.getstate()
|
||||
|
||||
for pl in Root.current:
|
||||
tracks = pl.peek(n)
|
||||
res += tracks
|
||||
if (n := n - len(tracks)) == 0:
|
||||
break
|
||||
|
||||
random.setstate(state)
|
||||
return res
|
||||
|
||||
def previous():
|
||||
global Track
|
||||
with Lock:
|
||||
|
|
|
@ -8,10 +8,7 @@ from . import node
|
|||
from . import prev
|
||||
from . import up_next
|
||||
from . import user
|
||||
from .. import notify
|
||||
from .. import sort
|
||||
from .. import trak
|
||||
import random
|
||||
|
||||
|
||||
class PlaylistRoot(node.PlaylistNode):
|
||||
|
@ -45,21 +42,6 @@ class PlaylistRoot(node.PlaylistNode):
|
|||
return node
|
||||
return None
|
||||
|
||||
def peek(self, n):
|
||||
with self.node_lock:
|
||||
state = random.getstate()
|
||||
res = [ ]
|
||||
|
||||
for pl in self.current:
|
||||
tracks = pl.peek(n)
|
||||
res += tracks
|
||||
n -= len(tracks)
|
||||
if n == 0:
|
||||
break
|
||||
|
||||
random.setstate(state)
|
||||
return res
|
||||
|
||||
def reset(self):
|
||||
with self.node_lock:
|
||||
for plist in self.children:
|
||||
|
|
|
@ -105,31 +105,6 @@ class TestPlaylistRoot(unittest.TestCase):
|
|||
self.assertEqual(self.playman.icon, "test")
|
||||
self.assertEqual(self.playman.current, [ 1, 2, 3 ])
|
||||
|
||||
def test_root_peek(self):
|
||||
self.assertEqual(self.playman.peek(3), [ ])
|
||||
|
||||
clist = self.playman.lookup("Collection")
|
||||
plist = self.playman.lookup("Libraries").lookup(test_library)
|
||||
library.join()
|
||||
random.seed(1)
|
||||
|
||||
clist.set_random(False)
|
||||
tracks = self.playman.peek(0)
|
||||
self.assertEqual(tracks, [ ])
|
||||
self.assertEqual(clist.current, -1)
|
||||
|
||||
tracks = self.playman.peek(5)
|
||||
self.assertEqual(tracks, [ clist[0], clist[1], clist[2], clist[3], clist[4] ])
|
||||
self.assertEqual(clist.current, -1)
|
||||
|
||||
clist.set_random(True)
|
||||
tracks = self.playman.peek(5)
|
||||
self.assertEqual(len(tracks), 5)
|
||||
self.assertEqual(clist.current, -1)
|
||||
|
||||
#for i in range(5):
|
||||
# self.assertEqual(self.playman.next(), tracks[i])
|
||||
|
||||
def test_root_select_playlist(self):
|
||||
clist = self.playman.lookup("Collection")
|
||||
plist = self.playman.lookup("Libraries").lookup(test_library)
|
||||
|
@ -156,12 +131,12 @@ class TestPlaylistRoot(unittest.TestCase):
|
|||
self.assertEqual(self.cb_change, [ ])
|
||||
|
||||
plist.current = 1247
|
||||
peek = self.playman.peek(4)
|
||||
self.assertEqual(len(peek), 4)
|
||||
self.assertEqual(peek[0], plist[-2])
|
||||
self.assertEqual(peek[1], plist[-1])
|
||||
self.assertEqual(peek[2], glist[ 0])
|
||||
self.assertEqual(peek[3], glist[ 1])
|
||||
#peek = self.playman.peek(4)
|
||||
#self.assertEqual(len(peek), 4)
|
||||
#self.assertEqual(peek[0], plist[-2])
|
||||
#self.assertEqual(peek[1], plist[-1])
|
||||
#self.assertEqual(peek[2], glist[ 0])
|
||||
#self.assertEqual(peek[3], glist[ 1])
|
||||
|
||||
#self.cb_change = [ ]
|
||||
#self.assertEqual(self.playman.next(), plist[-2])
|
||||
|
|
|
@ -4,6 +4,7 @@ from . import notify
|
|||
from . import playlist
|
||||
from . import trak
|
||||
import os
|
||||
import random
|
||||
import unittest
|
||||
|
||||
test_album = os.path.abspath("./trier/Test Album")
|
||||
|
@ -91,6 +92,31 @@ class TestPlaylist(unittest.TestCase):
|
|||
self.assertEqual(len(prev), 0)
|
||||
self.assertIsNone(playlist.Track)
|
||||
|
||||
def test_peek(self):
|
||||
self.assertEqual(playlist.peek(3), [ ])
|
||||
|
||||
clist = playlist.lookup("Collection")
|
||||
plist = playlist.lookup("Libraries").lookup(test_album)
|
||||
playlist.library.join()
|
||||
random.seed(1)
|
||||
|
||||
clist.set_random(False)
|
||||
tracks = playlist.peek(0)
|
||||
self.assertEqual(tracks, [ ])
|
||||
self.assertEqual(clist.current, -1)
|
||||
|
||||
tracks = playlist.peek(5)
|
||||
self.assertEqual(tracks, [ clist[i] for i in range(5) ])
|
||||
self.assertEqual(clist.current, -1)
|
||||
|
||||
clist.set_random(True)
|
||||
tracks = playlist.peek(5)
|
||||
self.assertEqual(len(tracks), 5)
|
||||
self.assertEqual(clist.current, -1)
|
||||
|
||||
for i in range(5):
|
||||
self.assertEqual(playlist.next(), tracks[i])
|
||||
|
||||
def test_save_playlists(self):
|
||||
dfile = data.DataFile("playlists.pickle", data.READ)
|
||||
track = trak.lookup(os.path.join(test_album, "01 - Test Track.ogg"))
|
||||
|
|
|
@ -28,7 +28,7 @@ def __changed__():
|
|||
Down.set_sensitive(Count > MINIMUM)
|
||||
|
||||
def __estimate__():
|
||||
tracks = curds.playlist.Root.peek(Count)
|
||||
tracks = curds.playlist.peek(Count)
|
||||
length = sum([ t.length for t in tracks if t is not None ])
|
||||
length += playbin.remaining() / Gst.SECOND
|
||||
(m, s) = divmod(round(length / 5.0) * 5, 60)
|
||||
|
|
Loading…
Reference in New Issue