tagdb: Have Tracks schedule an ImportTask when loading
And a CommitTask when we're done. Note: we only load and import the tagdb if we are creating a new database. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
2f1b7b397f
commit
52415cf4da
|
@ -3,8 +3,10 @@ from . import allocator
|
||||||
from . import stack
|
from . import stack
|
||||||
from . import tags
|
from . import tags
|
||||||
from . import track
|
from . import track
|
||||||
|
import db
|
||||||
import lib
|
import lib
|
||||||
import pathlib
|
import pathlib
|
||||||
|
import scanner
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
File = "tagdb.pickle"
|
File = "tagdb.pickle"
|
||||||
|
@ -78,6 +80,8 @@ def load():
|
||||||
global Library
|
global Library
|
||||||
global Tracks
|
global Tracks
|
||||||
global Stack
|
global Stack
|
||||||
|
if not db.new_db():
|
||||||
|
return
|
||||||
with lib.data.DataFile(File, lib.data.READ) as f:
|
with lib.data.DataFile(File, lib.data.READ) as f:
|
||||||
if f.exists():
|
if f.exists():
|
||||||
(tagstate, Tracks, Library, Stack) = f.unpickle()
|
(tagstate, Tracks, Library, Stack) = f.unpickle()
|
||||||
|
@ -85,6 +89,7 @@ def load():
|
||||||
Tracks.load_tags()
|
Tracks.load_tags()
|
||||||
Library.fix_tracks()
|
Library.fix_tracks()
|
||||||
__register_callbacks()
|
__register_callbacks()
|
||||||
|
scanner.Queue.push(scanner.task.CommitTask())
|
||||||
|
|
||||||
def __register_callbacks():
|
def __register_callbacks():
|
||||||
for store in [ Library, tags.User, Tracks ]:
|
for store in [ Library, tags.User, Tracks ]:
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
# Copyright 2020 (c) Anna Schumaker.
|
# Copyright 2020 (c) Anna Schumaker.
|
||||||
|
import db
|
||||||
import lib
|
import lib
|
||||||
import pathlib
|
import pathlib
|
||||||
import tagdb
|
import tagdb
|
||||||
|
@ -8,6 +9,7 @@ test_tracks = pathlib.Path("./data/Test Album")
|
||||||
|
|
||||||
class TestLibraryTag(unittest.TestCase):
|
class TestLibraryTag(unittest.TestCase):
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
|
db.NewDatabase = True
|
||||||
tagdb.reset()
|
tagdb.reset()
|
||||||
|
|
||||||
def test_library_tag_init(self):
|
def test_library_tag_init(self):
|
||||||
|
@ -122,6 +124,7 @@ class TestTrackDB(unittest.TestCase):
|
||||||
tagdb.Bus.complete()
|
tagdb.Bus.complete()
|
||||||
self.assertTrue(db_file.exists())
|
self.assertTrue(db_file.exists())
|
||||||
|
|
||||||
|
db.reset()
|
||||||
tagdb.tags.reset()
|
tagdb.tags.reset()
|
||||||
tagdb.Library.reset()
|
tagdb.Library.reset()
|
||||||
tagdb.Tracks.reset()
|
tagdb.Tracks.reset()
|
||||||
|
|
|
@ -4,6 +4,8 @@ from lib import publisher
|
||||||
from . import tags
|
from . import tags
|
||||||
from gi.repository import GObject
|
from gi.repository import GObject
|
||||||
import datetime
|
import datetime
|
||||||
|
import db
|
||||||
|
import scanner
|
||||||
|
|
||||||
class Track(GObject.Object):
|
class Track(GObject.Object):
|
||||||
def __init__(self, trackid, filepath, library):
|
def __init__(self, trackid, filepath, library):
|
||||||
|
@ -66,6 +68,9 @@ class Track(GObject.Object):
|
||||||
self.decade = tags.Decade.init_track(self.decade, self)
|
self.decade = tags.Decade.init_track(self.decade, self)
|
||||||
self.year = tags.Year.init_track(self.decade, self.year, self)
|
self.year = tags.Year.init_track(self.decade, self.year, self)
|
||||||
self.playlists = [ tags.User.init_track(p, self) for p in self.playlists ]
|
self.playlists = [ tags.User.init_track(p, self) for p in self.playlists ]
|
||||||
|
scanner.import_track(db.library.Table.find(self.library.name),
|
||||||
|
self.filepath(), self.playcount, self.lastplayed,
|
||||||
|
[ p.name for p in self.playlists ])
|
||||||
|
|
||||||
def about_to_remove(self):
|
def about_to_remove(self):
|
||||||
tags.Artist.remove(self.artist, self)
|
tags.Artist.remove(self.artist, self)
|
||||||
|
|
Loading…
Reference in New Issue