self.vbox.add (hbox)
- def do_the_job (self, artist_albums):
- TOTAL = len (artist_albums)
+ def do_the_job (self, artist_albums_model):
+ """
+ each row: ("Visible text", pixbuf, Artist, Album)
+ """
+ TOTAL = len (artist_albums_model)
current = 1
-
- for (artist, album) in artist_albums:
+
+ it = artist_albums_model.get_iter_first ()
+ while (it):
+
while (gtk.events_pending()):
gtk.main_iteration()
if (self.cancel):
break
+
+ artist = artist_albums_model.get_value (it, 2)
+ album = artist_albums_model.get_value (it, 3)
try:
(image, thumb) = self.downloader.get_album_art (artist, album)
+ if thumb:
+ pixbuf = gtk.gdk.pixbuf_new_from_file_at_size (thumb, 124, 124)
+ artist_albums_model.set_value (it, 1, pixbuf)
except LookupError, e:
print "Error processing %s - %s" % (artist, album)
print str(e)
self.album_art.set_from_stock (gtk.STOCK_CDROM, gtk.ICON_SIZE_DIALOG)
current += 1
+ it = artist_albums_model.iter_next (it)
def handle_response (self, widget, response_id):
("", "Freakin' out"),
("Dinah Washington", "")]
- PAIRS = [ ("Artist %d" % i, "Album %d" %i) for i in range (0, 100)]
+ PAIRS_store = gtk.ListStore (str, gtk.gdk.Pixbuf, str, str)
+ for i in range (0, 100):
+ PAIRS_store.append (("blablabal", None, "Artist %d" % i, "Album %d" %i))
def clicked_button (self):
aadd = MussorgskyAlbumArtDownloadDialog (w)
aadd.show_all ()
- aadd.do_the_job (PAIRS)
+ aadd.do_the_job (PAIRS_store)
w = gtk.Window ()
box = gtk.VBox ()
print "Waiting to update"
gobject.timeout_add_seconds (3, self.update_values, None)
- def artists_clicked (self, widget):
- list_songs = self.tracker.get_songs_without_artist ()
- list_albums = self.tracker.get_list_of_known_albums ()
- list_artists = self.tracker.get_list_of_known_artists ()
- self.show_edit_panel (list_songs, list_albums, list_artists)
-
- def titles_clicked (self, widget):
- list_songs = self.tracker.get_songs_without_title ()
- list_albums = self.tracker.get_list_of_known_albums ()
- list_artists = self.tracker.get_list_of_known_artists ()
- self.show_edit_panel (list_songs, list_albums, list_artists)
-
- def albums_clicked (self, widget):
- list_songs = self.tracker.get_songs_without_album ()
+ def broken_files_clicked (self, widget):
+ list_songs = self.tracker.get_all_broken_songs ()
list_albums = self.tracker.get_list_of_known_albums ()
list_artists = self.tracker.get_list_of_known_artists ()
self.show_edit_panel (list_songs, list_albums, list_artists)
self.show_edit_panel (list_songs, list_albums, list_artists)
def create_main_view (self):
- vbox = gtk.VBox (spacing=12)
+ vbox = gtk.VBox (spacing=12, homogeneous=False)
- # Artist row
- artist_row = gtk.HBox (homogeneous=True)
+ # Labels artist row
self.label_no_artist = gtk.Label ("")
- artist_row.add (self.label_no_artist)
- button_artists = gtk.Button ("Fix empty artists!")
- button_artists.connect ("clicked", self.artists_clicked)
- artist_row.add (button_artists)
-
- vbox.add (artist_row)
+ vbox.add (self.label_no_artist)
- # Title row
- title_row = gtk.HBox (homogeneous=True)
self.label_no_title = gtk.Label ("")
- title_row.add (self.label_no_title)
- button_titles = gtk.Button ("Fix empty titles!")
- button_titles.connect ("clicked", self.titles_clicked)
- title_row.add (button_titles)
-
- vbox.add (title_row)
+ vbox.add (self.label_no_title)
- # Album row
- album_row = gtk.HBox (homogeneous=True)
self.label_no_album = gtk.Label ("")
- album_row.add (self.label_no_album)
- button_albums = gtk.Button ("Fix empty albums!")
- button_albums.connect ("clicked", self.albums_clicked)
- album_row.add (button_albums)
-
- vbox.add (album_row)
-
- # All songs row
+ vbox.add (self.label_no_album)
+
+ # Buttons
all_songs_row = gtk.HBox (homogeneous=True, spacing=12)
- album_art = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
- hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
- album_art.set_title ("Get all album art")
- album_art.connect ("clicked", self.get_all_album_art)
- all_songs_row.add (album_art)
+ button_broken_files = gtk.Button ("Fix metadata!")
+ button_broken_files.connect ("clicked", self.broken_files_clicked)
+ all_songs_row.add (button_broken_files)
+
browse = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
- browse.set_title ("Browse the collection")
+ browse.set_title ("Manage\ncollection")
browse.connect ("clicked", self.browse_clicked)
all_songs_row.add (browse)
+ album_art = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
+ hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
+ album_art.set_title ("Album art")
+ album_art.connect ("clicked", self.get_all_album_art)
+ all_songs_row.add (album_art)
+
vbox.add (all_songs_row)
return vbox
+
+
+
if __name__ == "__main__":
try:
RDF_NO_ALBUM = RDF_NO_PROPX % "Audio:Album"
RDF_NO_TITLE = RDF_NO_PROPX % "Audio:Title"
+RDF_ANY_MISSING_METADATA = """
+<rdfq:Condition>
+ <rdfq:or>
+ <rdfq:equals>
+ <rdfq:Property name="Audio:Artist" />
+ <rdf:String></rdf:String>
+ </rdfq:equals>
+ <rdfq:equals>
+ <rdfq:Property name="Audio:Title" />
+ <rdf:String></rdf:String>
+ </rdfq:equals>
+ <rdfq:equals>
+ <rdfq:Property name="Audio:Album" />
+ <rdf:String></rdf:String>
+ </rdfq:equals>
+ </rdfq:or>
+</rdfq:Condition>
+"""
+
class TrackerBackend:
[], False, 0, 32000)
return results
-
- def get_songs_without_artist (self):
- """
- Return tuples with the following fields:
- (uri, "Music", artist, title, album, mimetype)
- """
- return self.__run_rdf_query (RDF_NO_ARTIST)
-
- def get_songs_without_title (self):
+ def get_all_broken_songs (self):
"""
Return tuples with the following fields:
(uri, "Music", artist, title, album, mimetype)
"""
- return self.__run_rdf_query (RDF_NO_TITLE)
+ return self.__run_rdf_query (RDF_ANY_MISSING_METADATA)
- def get_songs_without_album (self):
- """
- Return tuples with the following fields:
- (uri, "Music", artist, title, album, mimetype)
- """
- return self.__run_rdf_query (RDF_NO_ALBUM)
-
def get_all_songs (self):
return self.__run_rdf_query ("")