2020-10-04 12:58:15 -04:00
|
|
|
# Copyright 2020 (c) Anna Schumaker.
|
2021-06-17 13:38:20 -04:00
|
|
|
from lib import bus
|
2020-10-24 21:21:38 -04:00
|
|
|
from lib import data
|
2020-10-10 20:07:53 -04:00
|
|
|
from lib import publisher
|
2020-10-04 15:28:30 -04:00
|
|
|
from . import library
|
2021-06-23 16:48:10 -04:00
|
|
|
from . import tags
|
2020-10-24 21:21:38 -04:00
|
|
|
from . import track
|
2020-10-04 15:28:30 -04:00
|
|
|
import pathlib
|
2020-10-24 21:21:38 -04:00
|
|
|
import threading
|
2020-10-04 12:58:15 -04:00
|
|
|
|
2020-10-24 21:21:38 -04:00
|
|
|
db_file = "trackdb.pickle"
|
2021-06-17 13:38:20 -04:00
|
|
|
save_bus = bus.Bus(500)
|
2021-06-25 11:14:55 -04:00
|
|
|
Library = library.LibraryStore()
|
2020-10-04 12:58:15 -04:00
|
|
|
|
2020-10-24 21:21:38 -04:00
|
|
|
def _do_save():
|
2021-06-17 13:38:20 -04:00
|
|
|
with data.DataFile(db_file, data.WRITE) as f:
|
2021-06-25 11:14:55 -04:00
|
|
|
f.pickle([ tags.Artist, tags.Album, tags.Genre, tags.Decade, tags.Year, library.Tracks, Library ])
|
2020-10-24 21:21:38 -04:00
|
|
|
|
|
|
|
def save(*args):
|
2021-06-17 13:38:20 -04:00
|
|
|
save_bus.board(_do_save)
|
2020-10-24 21:21:38 -04:00
|
|
|
|
2020-10-25 09:02:19 -04:00
|
|
|
def load():
|
2021-06-25 11:14:55 -04:00
|
|
|
global Library
|
2020-10-25 09:02:19 -04:00
|
|
|
with data.DataFile(db_file, data.READ) as f:
|
2021-06-07 10:02:35 -04:00
|
|
|
if f.exists():
|
2021-06-25 11:14:55 -04:00
|
|
|
(tags.Artist, tags.Album, tags.Genre, tags.Decade, tags.Year, library.Tracks, Library) = f.unpickle()
|
2020-10-25 09:02:19 -04:00
|
|
|
|
2020-10-24 21:21:38 -04:00
|
|
|
def __register_callbacks():
|
2021-06-25 11:14:55 -04:00
|
|
|
Library.Added.register(save)
|
|
|
|
Library.Removed.register(save)
|
2021-06-24 13:47:51 -04:00
|
|
|
library.Tracks.Added.register(save)
|
|
|
|
library.Tracks.Removed.register(save)
|
2021-06-25 13:21:52 -04:00
|
|
|
library.Tracks.Updated.register(save)
|
2020-10-24 21:21:38 -04:00
|
|
|
__register_callbacks()
|
|
|
|
|
2020-10-04 12:58:15 -04:00
|
|
|
def reset():
|
2021-06-25 11:14:55 -04:00
|
|
|
Library.reset()
|
2021-06-23 16:48:10 -04:00
|
|
|
tags.reset()
|
2020-10-10 20:23:28 -04:00
|
|
|
library.reset()
|
2021-06-17 13:38:20 -04:00
|
|
|
save_bus.clear()
|
2020-10-24 21:21:38 -04:00
|
|
|
|
|
|
|
data.DataFile(db_file, data.READ).remove()
|
|
|
|
__register_callbacks()
|