X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fsimadb.py;h=e52386cb6fe7554814f0323a70b6836fb8f95982;hb=703c89bb8361c1d5bc7456ef47a91b5e63dcb74b;hp=ca2277d601d4c24c61e407fa02ee996f86beab92;hpb=e8b1bae0a5ff4fcbe9a2d206f6c22b33f3ab7740;p=mpd-sima.git diff --git a/sima/lib/simadb.py b/sima/lib/simadb.py index ca2277d..e52386c 100644 --- a/sima/lib/simadb.py +++ b/sima/lib/simadb.py @@ -45,10 +45,16 @@ class SimaDB: def get_database_connection(self): """get database reference""" - connection = sqlite3.connect( - self._db_path, isolation_level=None) + connection = sqlite3.connect(self._db_path, isolation_level=None) return connection + def get_info(self): + connection = self.get_database_connection() + info = connection.execute("""SELECT * FROM db_info + WHERE name = "DB Version" LIMIT 1;""").fetchone() + connection.close() + return info + def create_db(self): """ Set up a database """ @@ -376,7 +382,8 @@ class SimaDB: connection.close() return row[0] if not add: # Not adding non existing track - connection.close() + if not with_connection: + connection.close() return None # Get an artist record or None if track.artist: @@ -535,7 +542,7 @@ class SimaDB: LEFT OUTER JOIN tracks_genres ON tracks_genres.track = tracks.id LEFT OUTER JOIN artists ON tracks.artist = artists.id LEFT OUTER JOIN genres ON genres.id = tracks_genres.genre - WHERE history.last_play > ? + WHERE history.last_play > ? AND genres.name NOT NULL ORDER BY history.last_play DESC """, (date.isoformat(' '),)) genres = list() @@ -597,11 +604,13 @@ class SimaDB: connection = with_connection else: connection = self.get_database_connection() - track_id = self.get_track(track, with_connection=connection, add=True) + track_id = self.get_track(track, with_connection=connection, add=add) rows = connection.execute( "SELECT id FROM blocklist WHERE track = ?", (track_id,)) if not rows.fetchone(): if not add: + if not with_connection: + connection.close() return None connection.execute('INSERT INTO blocklist (track) VALUES (?)', (track_id,)) @@ -622,11 +631,13 @@ class SimaDB: connection = with_connection else: connection = self.get_database_connection() - album_id = self.get_album(album, with_connection=connection, add=True) + album_id = self.get_album(album, with_connection=connection, add=add) rows = connection.execute( "SELECT id FROM blocklist WHERE album = ?", (album_id,)) if not rows.fetchone(): if not add: + if not with_connection: + connection.close() return None connection.execute('INSERT INTO blocklist (album) VALUES (?)', (album_id,)) @@ -647,7 +658,7 @@ class SimaDB: connection = with_connection else: connection = self.get_database_connection() - artist_id = self.get_artist(artist, with_connection=connection, add=True) + artist_id = self.get_artist(artist, with_connection=connection, add=add) rows = connection.execute( "SELECT id FROM blocklist WHERE artist = ?", (artist_id,)) if not rows.fetchone(): @@ -663,6 +674,24 @@ class SimaDB: connection.close() return bl + def view_bl(self): + connection = self.get_database_connection() + connection.row_factory = sqlite3.Row + rows = connection.execute("""SELECT artists.name AS artist, + artists.mbid AS musicbrainz_artist, + albums.name AS album, + albums.mbid AS musicbrainz_album, + tracks.title AS title, + tracks.mbid AS musicbrainz_title, + blocklist.id + FROM blocklist + LEFT OUTER JOIN artists ON blocklist.artist = artists.id + LEFT OUTER JOIN albums ON blocklist.album = albums.id + LEFT OUTER JOIN tracks ON blocklist.track = tracks.id""") + res = [dict(row) for row in rows.fetchall()] + connection.close() + return res + def delete_bl(self, track=None, album=None, artist=None): if not (track or album or artist): return