Move the qml/* files to the src folder. Now it is the main version
[mussorgsky] / src / tracker_backend_dbus.py
diff --git a/src/tracker_backend_dbus.py b/src/tracker_backend_dbus.py
new file mode 100644 (file)
index 0000000..0a78d4a
--- /dev/null
@@ -0,0 +1,59 @@
+import dbus
+import os
+
+TRACKER = "org.freedesktop.Tracker1"
+TRACKER_OBJ = "/org/freedesktop/Tracker1/Resources"
+
+# (album name, artist1|artist2|... , number of artists)
+ALBUM_ARTISTS_COUNTER = """
+SELECT nie:title (?album) nmm:artistName (?artist) COUNT (?artist)
+WHERE
+    {
+     ?album a nmm:MusicAlbum ; 
+            nmm:albumArtist ?artist .
+    }
+GROUP BY ?album
+"""
+
+SONGS = """
+SELECT ?u nmm:artistName(?artist) nmm:albumTitle(?album) WHERE 
+{
+    ?u a nmm:MusicPiece ;
+      nmm:performer ?artist ;
+      nmm:musicAlbum ?album .
+}
+"""
+
+class TrackerBackendDBus:
+
+    def __init__ (self):
+        self.dbus = dbus.SessionBus ()
+        self.tracker = self.dbus.get_object (TRACKER, TRACKER_OBJ)
+        self.resources = dbus.Interface (self.tracker,
+                                         "org.freedesktop.Tracker1.Resources")
+
+    def get_all_albums (self):
+        results = self.resources.SparqlQuery (ALBUM_ARTISTS_COUNTER)
+        return self.__iter_results (results)
+
+    def get_all_songs (self):
+        results = self.resources.SparqlQuery (SONGS)
+        for uri, artist, album in results:
+            yield (uri, artist, album)
+
+    def __iter_results (self, results):
+        for (title, artist, counter) in results:
+            print "Executed the yield", counter
+            if int(counter) > 1:
+                yield (unicode(title), "Various artists")
+            else:
+                yield (unicode(title), unicode(artist))
+
+
+if __name__ == "__main__":
+    b = TrackerBackendDBus ()
+    for pair in b.get_all_songs ():
+        print "Outter loop"
+        print pair
+    print "ok"
+