curds: Add Album playlists

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-24 09:30:12 -04:00
parent e3e51ee899
commit c7d45754a0
2 changed files with 23 additions and 2 deletions

View File

@ -3,6 +3,17 @@ from . import node
from . import playlist
from .. import notify
class ArtistPlaylist(playlist.Playlist):
def add(self, track):
playlist.Playlist.add(self, track)
alist = self.lookup(track["album"])
if alist == None:
alist = playlist.Playlist(track["album"], "media-optical-cd-audio")
self.insert_child(alist)
alist.add(track)
class ArtistNode(node.PlaylistNode):
def __init__(self):
node.PlaylistNode.__init__(self, "Artists", "avatar-default-symbolic")
@ -11,7 +22,7 @@ class ArtistNode(node.PlaylistNode):
def new_track(self, track):
plist = self.lookup(track["albumartist"])
if plist == None:
plist = playlist.Playlist(track["albumartist"], self.icon)
plist = ArtistPlaylist(track["albumartist"], self.icon)
self.insert_child(plist)
plist.add(track)

View File

@ -9,6 +9,7 @@ import unittest
test_library = os.path.abspath("./trier/Test Library")
test_album = os.path.join("Test Album 1", "01 - Test Track 01.ogg")
test_album2 = os.path.join("Test Album 2", "01 - Test Track 01.ogg")
test_album3 = os.path.join("Test Album 2", "02 - Test Track 02.ogg")
class TestArtistPlaylist(unittest.TestCase):
def test_artist_node(self):
@ -29,6 +30,13 @@ class TestArtistPlaylist(unittest.TestCase):
self.assertEqual(len(plist), 1)
self.assertEqual(plist[0], track1)
self.assertEqual(plist.n_children(), 1)
alist = plist.nth_child(0)
self.assertEqual(alist.name, "Test Album 1")
self.assertEqual(alist.icon, "media-optical-cd-audio")
self.assertEqual(len(alist), 1)
self.assertEqual(alist[0], track1)
track2 = tags.Track.lookup(os.path.join(test_library, "Test Artist 02", test_album))
self.assertEqual(anode.n_children(), 2)
@ -39,8 +47,10 @@ class TestArtistPlaylist(unittest.TestCase):
track3 = tags.Track.lookup(os.path.join(test_library, "Test Artist 02", test_album2))
track4 = tags.Track.lookup(os.path.join(test_library, "Test Artist 02", test_album3))
self.assertEqual(anode.n_children(), 2)
self.assertEqual(len(plist), 2)
self.assertEqual(plist.n_children(), 2)
self.assertEqual(len(plist), 3)
notify.cancel("new-track", anode.new_track)
anode.reset()