67 lines
2.3 KiB
Python
67 lines
2.3 KiB
Python
# Copyright 2021 (c) Anna Schumaker.
|
|
import datetime
|
|
import lib
|
|
import pathlib
|
|
|
|
def new_db():
|
|
from . import sql
|
|
try:
|
|
return sql.execute("SELECT COUNT(*) from tracks").fetchone()[0] == 0
|
|
except:
|
|
return True
|
|
|
|
|
|
from . import artist
|
|
from . import album
|
|
from . import disc
|
|
from . import genre
|
|
from . import decade
|
|
from . import year
|
|
from . import library
|
|
from . import track
|
|
from . import state
|
|
from . import user
|
|
|
|
from . import sql
|
|
def _search_table(table, key, search):
|
|
if row := sql.execute(f"SELECT {key} FROM {table} "
|
|
f"WHERE plstateid=?", [ search ]).fetchone():
|
|
return row[0]
|
|
|
|
def find_playlist(plstateid):
|
|
if playlistid := _search_table("playlists", "playlistid", plstateid):
|
|
return user.Table.get(playlistid)
|
|
if artistid := _search_table("artists", "artistid", plstateid):
|
|
return artist.Table.get(artistid)
|
|
if albumid := _search_table("albums", "albumid", plstateid):
|
|
return album.Table.get(albumid)
|
|
if discid := _search_table("discs", "discid", plstateid):
|
|
return disc.Table.get(discid)
|
|
if genreid := _search_table("genres", "genreid", plstateid):
|
|
return genre.Table.get(genreid)
|
|
if decadeid := _search_table("decades", "decadeid", plstateid):
|
|
return decade.Table.get(decadeid)
|
|
if yearid := _search_table("years", "yearid", plstateid):
|
|
return year.Table.get(yearid)
|
|
if libraryid := _search_table("libraries", "libraryid", plstateid):
|
|
return library.Table.get(libraryid)
|
|
return None
|
|
|
|
def make_fake_track(trackno, length, title, path, lib="/a/b/c", art="Test Artist",
|
|
alb="Test Album", disk=1, subtitle=None, yeer=2021, mnth=3, dy=18):
|
|
lib = library.Table.find(pathlib.Path(lib))
|
|
art = artist.Table.find(art, art)
|
|
alb = art.find_album(alb, datetime.date(yeer, mnth, dy))
|
|
disk = alb.find_disc(disk, subtitle)
|
|
dec = decade.Table.find((yeer // 10) * 10)
|
|
yeer = dec.find_year(yeer)
|
|
return track.Table.insert(lib, art, alb, disk, dec, yeer, trackno,
|
|
length, title, pathlib.Path(path))
|
|
|
|
def reset():
|
|
mods = [ track, state, user, artist, album,
|
|
disc, genre, decade, year, library ]
|
|
for mod in mods: mod.Table.reset()
|
|
|
|
if lib.version.TESTING: reset()
|