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"
24 RDF_ANY_MISSING_METADATA = """
28 <rdfq:Property name="Audio:Artist" />
29 <rdf:String></rdf:String>
32 <rdfq:Property name="Audio:Title" />
33 <rdf:String></rdf:String>
36 <rdfq:Property name="Audio:Album" />
37 <rdf:String></rdf:String>
47 print "Tracker backend up"
48 bus = dbus.SessionBus ()
49 self.tracker_metadata = bus.get_object (TRACKER, TRACKER_OBJ)
50 self.iface_metadata = dbus.Interface (self.tracker_metadata,
51 "org.freedesktop.Tracker.Metadata")
53 self.tracker_search = bus.get_object (TRACKER, TRACKER_SEARCH_OBJ)
54 self.iface_search = dbus.Interface (self.tracker_search,
55 "org.freedesktop.Tracker.Search")
57 def count_songs_wo_artist (self):
58 return self.iface_metadata.GetCount ("Music", "*", RDF_NO_ARTIST)
60 def count_songs_wo_title (self):
61 return self.iface_metadata.GetCount ("Music", "*", RDF_NO_TITLE)
63 def count_songs_wo_album (self):
64 return self.iface_metadata.GetCount ("Music", "*", RDF_NO_ALBUM)
66 def __run_rdf_query (self, rdf_query):
67 results = self.iface_search.Query (-1, "Music",
72 "", [], rdf_query, False,
73 ["Audio:DateAdded"], False, 0, 32000)
76 def get_all_broken_songs (self):
78 Return tuples with the following fields:
79 (uri, "Music", artist, title, album, mimetype)
81 return self.__run_rdf_query (RDF_ANY_MISSING_METADATA)
83 def get_all_songs (self):
84 return self.__run_rdf_query ("")
87 def get_list_of_known_albums (self):
88 return self.iface_metadata.GetUniqueValues ("Music",
92 def get_list_of_known_artists (self):
93 return self.iface_metadata.GetUniqueValues ("Music",
97 def get_all_pairs_artist_album (self):
98 return self.iface_metadata.GetUniqueValues ("Music",
99 ["Audio:Artist", "Audio:Album"],
103 if __name__ == "__main__":
105 tracker = TrackerBackend ()
107 print "Songs without artist: " + str(tracker.count_songs_wo_artist ())
109 results = tracker.get_songs_without_artist ()
111 print "'%s', '%s', '%s', '%s', '%s'" % (r[0], r[2], r[3], r[4], r[5])
114 print "Songs without album " + str(tracker.count_songs_wo_album ())
115 print "Songs without title " + str(tracker.count_songs_wo_title ())
117 albums = tracker.get_list_of_known_albums ()
118 print "%d different albums" % (len (albums))
123 print tracker.get_all_songs ()