trackdb: Remove tags dict() from tracks
Just set and get these values directly Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
ebf7eb6abc
commit
8fcd84e7d3
|
@ -22,84 +22,80 @@ class TestTrack(unittest.TestCase):
|
|||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.trackid, 1)
|
||||
self.assertEqual(trak.filepath, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertIsInstance(trak.tags, dict)
|
||||
self.assertIsInstance(track.TrackUpdated, publisher.Publisher)
|
||||
|
||||
def test_track_album(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.tags["album"], "Test Album")
|
||||
self.assertEqual(trak.album, "Test Album")
|
||||
self.assertEqual(trak["album"], "Test Album")
|
||||
|
||||
def test_track_artist(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.tags["artist"], "Test Artist")
|
||||
self.assertEqual(trak.artist, "Test Artist")
|
||||
self.assertEqual(trak["artist"], "Test Artist")
|
||||
trak2 = track.Track(2, test_tracks / "02 - Test {Disc 2}.ogg")
|
||||
self.assertEqual(trak2.tags["artist"], "Test Album Artist")
|
||||
self.assertEqual(trak2.artist, "Test Album Artist")
|
||||
|
||||
def test_track_decade(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.decade(), 2010)
|
||||
trak.tags["year"] = 1974
|
||||
trak.year = 1974
|
||||
self.assertEqual(trak.decade(), 1970)
|
||||
|
||||
def test_track_discnumber(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.tags["discnumber"], 1)
|
||||
self.assertEqual(trak.discnumber, 1)
|
||||
self.assertEqual(trak["discnumber"], "01")
|
||||
|
||||
def test_track_genres(self):
|
||||
trak = track.Track(1, test_tracks / "02 - Test {Disc 2}.ogg")
|
||||
self.assertEqual(trak.tags["genre"], [ "Test", "Genre", "List" ])
|
||||
self.assertEqual(trak.genre, [ "Test", "Genre", "List" ])
|
||||
self.assertEqual(trak["genre"], "Test, Genre, List")
|
||||
lst = [ "Test", "Genre", "List" ]
|
||||
for g in trak.genres():
|
||||
self.assertEqual(g, lst.pop(0))
|
||||
|
||||
def test_track_length(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.tags["length"], 10)
|
||||
self.assertEqual(trak.length, 10)
|
||||
self.assertEqual(trak["length"], "0:10")
|
||||
trak.tags["length"] = 61
|
||||
trak.length = 61
|
||||
self.assertEqual(trak["length"], "1:01")
|
||||
trak.tags["length"] = 3
|
||||
trak.length = 3
|
||||
self.assertEqual(trak["length"], "0:03")
|
||||
|
||||
def test_track_played(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
trak.tags["playcount"] = 0
|
||||
trak.tags["lastplayed"] = None
|
||||
trak.playcount = 0
|
||||
trak.lastplayed = None
|
||||
self.assertEqual(trak["playcount"], "0")
|
||||
self.assertEqual(trak["lastplayed"], "Never")
|
||||
trak.played()
|
||||
self.assertEqual(trak.tags["playcount"], 1)
|
||||
self.assertEqual(trak.tags["lastplayed"], datetime.date.today())
|
||||
self.assertEqual(trak.playcount, 1)
|
||||
self.assertEqual(trak.lastplayed, datetime.date.today())
|
||||
self.assertEqual(trak["playcount"], "1")
|
||||
self.assertEqual(trak["lastplayed"], str(datetime.date.today()))
|
||||
self.assertEqual(self.count_updated, 1)
|
||||
trak.played()
|
||||
self.assertEqual(trak.tags["playcount"], 2)
|
||||
self.assertEqual(trak.playcount, 2)
|
||||
self.assertEqual(trak["playcount"], "2")
|
||||
self.assertEqual(self.count_updated, 2)
|
||||
|
||||
def test_track_title(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.tags["title"], "Test Track")
|
||||
self.assertEqual(trak.title, "Test Track")
|
||||
self.assertEqual(trak["title"], "Test Track")
|
||||
|
||||
def test_track_tracknumber(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.tags["tracknumber"], 1)
|
||||
self.assertEqual(trak.tracknumber, 1)
|
||||
self.assertEqual(trak["tracknumber"], "01")
|
||||
trak.tags["tracknumber"] = 10
|
||||
trak.tracknumber = 10
|
||||
self.assertEqual(trak["tracknumber"], "10")
|
||||
|
||||
def test_track_year(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.tags["year"], 2019)
|
||||
self.assertEqual(trak.year, 2019)
|
||||
self.assertEqual(trak["year"], "2019")
|
||||
trak2 = track.Track(2, test_tracks / "02 - Test {Disc 2}.ogg")
|
||||
self.assertEqual(trak2.tags["year"], 2019)
|
||||
self.assertEqual(trak2.year, 2019)
|
||||
self.assertEqual(trak2["year"], "2019")
|
||||
|
||||
def test_track_reset(self):
|
||||
|
|
|
@ -10,24 +10,25 @@ class Track:
|
|||
def __init__(self, trackid, filepath):
|
||||
self.trackid = trackid
|
||||
self.filepath = filepath
|
||||
self.tags = { "lastplayed" : None, "playcount" : 0 }
|
||||
self.lastplayed = None
|
||||
self.playcount = None
|
||||
|
||||
f = mutagen.File(filepath)
|
||||
self.tags["album"] = f.get("album", ["Unknown Album"])[0]
|
||||
self.tags["artist"] = f.get("artist", ["Unknown Artist"])[0]
|
||||
self.tags["artist"] = f.get("albumartist", [self.tags["artist"]])[0]
|
||||
self.tags["discnumber"] = int(f.get("discnumber", [1])[0])
|
||||
self.tags["genre"] = f.get("genre", [ "" ])[0]
|
||||
self.tags["genre"] = [ g.strip() for g in re.split(",|;|/|:", self.tags["genre"]) ]
|
||||
self.tags["length"] = int(f.info.length)
|
||||
self.tags["title"] = f.get("title", [""])[0]
|
||||
self.tags["tracknumber"] = int(f.get("tracknumber", [0])[0])
|
||||
self.tags["year"] = f.get("date", ["0"])[0]
|
||||
self.tags["year"] = f.get("originalyear", [self.tags["year"]])[0]
|
||||
self.tags["year"] = int(re.match("\d+", self.tags["year"]).group(0))
|
||||
self.album = f.get("album", ["Unknown Album"])[0]
|
||||
self.artist = f.get("artist", ["Unknown Artist"])[0]
|
||||
self.artist = f.get("albumartist", [self.artist])[0]
|
||||
self.discnumber = int(f.get("discnumber", [1])[0])
|
||||
self.genre = f.get("genre", [ "" ])[0]
|
||||
self.genre = [ g.strip() for g in re.split(",|;|/|:", self.genre) ]
|
||||
self.length = int(f.info.length)
|
||||
self.title = f.get("title", [""])[0]
|
||||
self.tracknumber = int(f.get("tracknumber", [0])[0])
|
||||
self.year = f.get("date", ["0"])[0]
|
||||
self.year = f.get("originalyear", [self.year])[0]
|
||||
self.year = int(re.match("\d+", self.year).group(0))
|
||||
|
||||
def __getitem__(self, item):
|
||||
tag = self.tags.get(item, None)
|
||||
tag = self.__dict__.get(item, None)
|
||||
if item == "length":
|
||||
(m, s) = divmod(tag, 60)
|
||||
return f"{m}:{s:02}"
|
||||
|
@ -36,19 +37,15 @@ class Track:
|
|||
elif item == "lastplayed":
|
||||
return "Never" if tag == None else str(tag)
|
||||
elif item == "genre":
|
||||
return ", ".join(self.tags["genre"])
|
||||
return ", ".join(self.genre)
|
||||
return None if tag == None else str(tag)
|
||||
|
||||
def decade(self):
|
||||
return (self.tags["year"] // 10) * 10
|
||||
|
||||
def genres(self):
|
||||
for g in self.tags["genre"]:
|
||||
yield g
|
||||
return (self.year // 10) * 10
|
||||
|
||||
def played(self):
|
||||
self.tags["playcount"] += 1
|
||||
self.tags["lastplayed"] = datetime.date.today()
|
||||
self.playcount += 1
|
||||
self.lastplayed = datetime.date.today()
|
||||
TrackUpdated.publish(self)
|
||||
|
||||
def reset():
|
||||
|
|
Loading…
Reference in New Issue