curds: Create a Collection playlist type
This represents all tracks added to the collection, from across all library paths. We also fix the value of Playlist.loop to "True" and prevent changing it Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
57f32aaa58
commit
22b3953be0
|
@ -0,0 +1,13 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import playlist
|
||||
from .. import notify
|
||||
|
||||
class CollectionPlaylist(playlist.Playlist):
|
||||
def __init__(self):
|
||||
playlist.Playlist.__init__(self, "Collection")
|
||||
notify.Notify.notify_me("new-track", self.add)
|
||||
self.loop = True
|
||||
|
||||
def set_loop(self, loop):
|
||||
self.loop = True
|
||||
return self.loop
|
|
@ -1,7 +1,6 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import collection
|
||||
from . import library
|
||||
from . import playlist
|
||||
from .. import notify
|
||||
import os
|
||||
|
||||
class LibraryManager(dict):
|
||||
|
@ -14,10 +13,5 @@ class LibraryManager(dict):
|
|||
|
||||
class PlaylistManager(dict):
|
||||
def __init__(self):
|
||||
self["Collection"] = playlist.Playlist("Collection")
|
||||
self["Collection"] = collection.CollectionPlaylist()
|
||||
self["Library"] = LibraryManager()
|
||||
|
||||
notify.Notify.notify_me("new-track", self.on_new_track)
|
||||
|
||||
def on_new_track(self, track):
|
||||
self["Collection"].add(track)
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import collection
|
||||
from . import playlist
|
||||
from .. import tags
|
||||
import os
|
||||
import unittest
|
||||
|
||||
test_album = os.path.abspath("./trier/Test Album")
|
||||
|
||||
class TestCollectionPlaylist(unittest.TestCase):
|
||||
def test_collection_plist(self):
|
||||
plist = collection.CollectionPlaylist()
|
||||
|
||||
self.assertIsInstance(plist, collection.CollectionPlaylist)
|
||||
self.assertIsInstance(plist, playlist.Playlist)
|
||||
self.assertEqual(plist.name, "Collection")
|
||||
self.assertEqual(len(plist), 0)
|
||||
|
||||
track1 = tags.Track.lookup(os.path.join(test_album, "01 - Test Track.ogg"))
|
||||
self.assertEqual(len(plist), 1)
|
||||
self.assertEqual(plist[0], track1)
|
||||
|
||||
self.assertTrue(plist.loop)
|
||||
self.assertTrue(plist.set_loop(False))
|
||||
self.assertTrue(plist.loop)
|
|
@ -1,4 +1,5 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import collection
|
||||
from . import library
|
||||
from . import manager
|
||||
from . import playlist
|
||||
|
@ -25,7 +26,7 @@ class TestPlaylistManager(unittest.TestCase):
|
|||
playman = manager.PlaylistManager()
|
||||
self.assertIsInstance(playman, manager.PlaylistManager)
|
||||
self.assertIsInstance(playman, dict)
|
||||
self.assertIsInstance(playman["Collection"], playlist.Playlist)
|
||||
self.assertIsInstance(playman["Collection"], collection.CollectionPlaylist)
|
||||
self.assertIsInstance(playman["Library"], manager.LibraryManager)
|
||||
self.assertIsInstance(playman["Library"], dict)
|
||||
|
||||
|
|
Loading…
Reference in New Issue