]> kaliko git repositories - mpd-sima.git/blobdiff - sima/lib/simadb.py
Add blocklist commands, remove simadb_cli
[mpd-sima.git] / sima / lib / simadb.py
index ca2277d601d4c24c61e407fa02ee996f86beab92..a66cbd0a53296974d193713f1be21a7b5dfc086b 100644 (file)
@@ -49,6 +49,13 @@ class SimaDB:
             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
         """
@@ -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()
@@ -663,6 +670,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