emmental/trackdb/__init__.py

44 lines
1.1 KiB
Python
Raw Normal View History

# Copyright 2020 (c) Anna Schumaker.
from lib import bus
from lib import data
from lib import publisher
from . import library
from . import tags
from . import track
import pathlib
import threading
db_file = "trackdb.pickle"
save_bus = bus.Bus(500)
Library = library.LibraryStore()
def _do_save():
with data.DataFile(db_file, data.WRITE) as f:
f.pickle([ tags.Artist, tags.Album, tags.Genre, tags.Decade, tags.Year, library.Tracks, Library ])
def save(*args):
save_bus.board(_do_save)
def load():
global Library
with data.DataFile(db_file, data.READ) as f:
if f.exists():
(tags.Artist, tags.Album, tags.Genre, tags.Decade, tags.Year, library.Tracks, Library) = f.unpickle()
def __register_callbacks():
Library.Added.register(save)
Library.Removed.register(save)
library.Tracks.Added.register(save)
library.Tracks.Removed.register(save)
library.Tracks.Updated.register(save)
__register_callbacks()
def reset():
Library.reset()
tags.reset()
library.reset()
save_bus.clear()
data.DataFile(db_file, data.READ).remove()
__register_callbacks()