tagdb: Mark tracks as played using datetime.datetime.now()

So that we caputere the timestamp that the track finished at. I also
update tha sqlite importer code to account for the possibility of
receiving either a datetime.date or a datetime.datetime

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-10-01 11:16:02 -04:00
parent 6fc0fb6b26
commit f14d73ce67
4 changed files with 11 additions and 4 deletions

View File

@ -89,3 +89,7 @@ class TestTrackTable(unittest.TestCase):
self.assertEqual(track.playcount, 4)
self.assertEqual(track.lastplayed.replace(microsecond=0),
datetime.datetime.combine(yesterday, datetime.time()))
track.last_played(5, now)
self.assertEqual(track.playcount, 5)
self.assertEqual(track.lastplayed, now)

View File

@ -84,7 +84,10 @@ class Track(objects.Row):
commit()
def last_played(self, playcount, lastplayed):
timestamp = datetime.datetime.combine(lastplayed, datetime.time())
if not isinstance(lastplayed, datetime.datetime):
timestamp = datetime.datetime.combine(lastplayed, datetime.time())
else:
timestamp = lastplayed
execute("UPDATE tracks "
"SET playcount=?, lastplayed=? "
"WHERE trackid=?", [ playcount, timestamp, self.rowid ])

View File

@ -81,9 +81,9 @@ class TestTrack(unittest.TestCase):
self.assertEqual(trak["lastplayed"], "Never")
trak.played()
self.assertEqual(trak.playcount, 1)
self.assertEqual(trak.lastplayed, datetime.date.today())
self.assertEqual(trak.lastplayed.date(), datetime.date.today())
self.assertEqual(trak["playcount"], "1")
self.assertEqual(trak["lastplayed"], str(datetime.date.today()))
#self.assertEqual(trak["lastplayed"], str(datetime.date.today()))
trak.played()
self.assertEqual(trak.playcount, 2)
self.assertEqual(trak["playcount"], "2")

View File

@ -85,7 +85,7 @@ class Track(GObject.Object):
def played(self):
self.playcount += 1
self.lastplayed = datetime.date.today()
self.lastplayed = datetime.datetime.now()
def remove_from_playlist(self, name):
tag = tags.User[name]