1 #!/usr/bin/env python2.5
5 TRACKER = 'org.freedesktop.Tracker'
6 TRACKER_OBJ = '/org/freedesktop/Tracker/Metadata'
7 TRACKER_SEARCH_OBJ = '/org/freedesktop/Tracker/Search'
13 <rdfq:Property name="%s" />
14 <rdf:String></rdf:String>
20 RDF_NO_ARTIST = RDF_NO_PROPX % "Audio:Artist"
21 RDF_NO_ALBUM = RDF_NO_PROPX % "Audio:Album"
22 RDF_NO_TITLE = RDF_NO_PROPX % "Audio:Title"
28 print "Tracker backend up"
29 bus = dbus.SessionBus ()
30 self.tracker_metadata = bus.get_object (TRACKER, TRACKER_OBJ)
31 self.iface_metadata = dbus.Interface (self.tracker_metadata,
32 "org.freedesktop.Tracker.Metadata")
34 self.tracker_search = bus.get_object (TRACKER, TRACKER_SEARCH_OBJ)
35 self.iface_search = dbus.Interface (self.tracker_search,
36 "org.freedesktop.Tracker.Search")
38 def count_songs_wo_artist (self):
39 return self.iface_metadata.GetCount ("Music", "*", RDF_NO_ARTIST)
41 def count_songs_wo_title (self):
42 return self.iface_metadata.GetCount ("Music", "*", RDF_NO_TITLE)
44 def count_songs_wo_album (self):
45 return self.iface_metadata.GetCount ("Music", "*", RDF_NO_ALBUM)
47 def __run_rdf_query (self, rdf_query):
48 results = self.iface_search.Query (-1, "Music",
53 "", [], rdf_query, False,
58 def get_songs_without_artist (self):
60 Return tuples with the following fields:
61 (uri, "Music", artist, title, album, mimetype)
63 return self.__run_rdf_query (RDF_NO_ARTIST)
65 def get_songs_without_title (self):
67 Return tuples with the following fields:
68 (uri, "Music", artist, title, album, mimetype)
70 return self.__run_rdf_query (RDF_NO_TITLE)
72 def get_songs_without_album (self):
74 Return tuples with the following fields:
75 (uri, "Music", artist, title, album, mimetype)
77 return self.__run_rdf_query (RDF_NO_ALBUM)
79 def get_all_songs (self):
80 return self.__run_rdf_query ("")
83 def get_list_of_known_albums (self):
84 return self.iface_metadata.GetUniqueValues ("Music",
88 def get_list_of_known_artists (self):
89 return self.iface_metadata.GetUniqueValues ("Music",
94 if __name__ == "__main__":
96 tracker = TrackerBackend ()
98 print "Songs without artist: " + str(tracker.count_songs_wo_artist ())
100 results = tracker.get_songs_without_artist ()
102 print "'%s', '%s', '%s', '%s', '%s'" % (r[0], r[2], r[3], r[4], r[5])
105 print "Songs without album " + str(tracker.count_songs_wo_album ())
106 print "Songs without title " + str(tracker.count_songs_wo_title ())
108 albums = tracker.get_list_of_known_albums ()
109 print "%d different albums" % (len (albums))
114 print tracker.get_all_songs ()