From 9cced017ad92461ad9dcf42bff00ee74ac272efb Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Wed, 25 Aug 2021 11:36:50 -0400 Subject: [PATCH] scanner: Add an ImportTask For importing tracks from the tagdb Signed-off-by: Anna Schumaker --- scanner/task.py | 12 ++++++++++++ scanner/test_task.py | 24 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/scanner/task.py b/scanner/task.py index 9583b2e..d3dc6ab 100644 --- a/scanner/task.py +++ b/scanner/task.py @@ -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) diff --git a/scanner/test_task.py b/scanner/test_task.py index c2e7300..2a3df07 100644 --- a/scanner/test_task.py +++ b/scanner/test_task.py @@ -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()))