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:
Anna Schumaker 2019-03-13 10:34:30 -04:00
parent 57f32aaa58
commit 22b3953be0
4 changed files with 42 additions and 9 deletions

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)