scanner: Add an ImportTask

For importing tracks from the tagdb

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-08-25 11:36:50 -04:00
parent 3402ce16ee
commit 9cced017ad
2 changed files with 36 additions and 0 deletions

View File

@ -32,3 +32,15 @@ class FileTask(Task):
for genre in meta.genres():
db.genre.Map.insert(db.genre.Table.find(genre), track)
db.playlist.TempMap.insert(db.playlist.Table.find("New Tracks"), track)
class ImportTask(FileTask):
def __init__(self, library, filepath, playcount, lastplayed):
FileTask.__init__(self, library, filepath)
self.playcount = playcount
self.lastplayed = lastplayed
def run_task(self):
FileTask.run_task(self)
if track := db.track.Table.lookup(self.filepath):
track.last_played(self.playcount, self.lastplayed)

View File

@ -1,4 +1,5 @@
# Copyright 2021 (c) Anna Schumaker.
import datetime
import db
import pathlib
import unittest
@ -58,3 +59,26 @@ class TestScannerFileTask(unittest.TestCase):
new = db.playlist.Table.find("New Tracks")
self.assertEqual(db.playlist.TempMap.lookup_tracks(new), [ track ])
class TestScannerImportTask(unittest.TestCase):
def setUp(self):
db.reset()
def test_scanner_import_task(self):
today = datetime.date.today()
lib = db.library.Table.find(test_tracks)
it = task.ImportTask(lib, test_track01, 4, today)
self.assertIsInstance(it, task.FileTask)
self.assertEqual(it.library, lib)
self.assertEqual(it.filepath, test_track01)
self.assertEqual(it.playcount, 4)
self.assertEqual(it.lastplayed, today)
self.assertIsNone(it.run_task())
track = db.track.Table.lookup(test_track01)
self.assertEqual(track.playcount, 4)
self.assertEqual(track.lastplayed,
datetime.datetime.combine(today, datetime.time()))