Hi @all,
ich hab heute mal wieder das Plugin Desktop Art für Ryhtmbox von mathias nedrebø ausprobiert.
Dabei fiel mir ein Bug auf: Wenn ihr in den ID3 Tags den Albumartist gesetzt hat, speichert Rhythmbox das Cover als <Albumartist> – <Albumname>.<Type> ab. Desktop Art kennt aber nur <Artist> – <Albumname>.<Type>. Somit findet er diese Cover dann niemals.
Schnell gefixt:
Die Methoden get_cover(self, db_entry=None) und get_song_info(self, db_entry=None)
der Datei /home/$USER/.gnome2/rhythmbox/plugins/desktop-art/CoverManager.py im original:
def get_cover(self, db_entry=None):
# Find cover in music dir
if db_entry:
cover_dir = path.dirname(url2pathname(db_entry.get_playback_uri()).replace('file://', ''))
if path.isdir(cover_dir):
for f in listdir(cover_dir):
file_name = path.join(cover_dir, f)
mt = mimetypes.guess_type(file_name)[0]
if mt and mt.startswith('image/'):
if path.splitext(f)[0].lower() in IMAGE_NAMES:
return file_name
# Find cover saved by artdisplay plugin
song_info = self.get_song_info(db_entry)
for rb_cover_path in ('~/.gnome2/rhythmbox/covers', '~/.cache/rhythmbox/covers/'):
for file_type in ('jpg', 'png', 'jpeg', 'gif', 'svg'):
cover_file = path.join(path.expanduser(rb_cover_path),
'%s - %s.%s' %
(song_info['artist'],
song_info['album'],
file_type))
if path.isfile(cover_file):
return cover_file
def get_song_info(self, db_entry=None):
song_info = {}
if db_entry:
song_info['title'] = self.db.entry_get(db_entry, rhythmdb.PROP_TITLE)
song_info['artist'] = self.db.entry_get(db_entry, rhythmdb.PROP_ARTIST)
song_info['album'] = self.db.entry_get(db_entry, rhythmdb.PROP_ALBUM)
return song_info
Und hier die gefixte Version:
def get_cover(self, db_entry=None):
# Find cover in music dir
if db_entry:
cover_dir = path.dirname(url2pathname(db_entry.get_playback_uri()).replace('file://', ''))
if path.isdir(cover_dir):
for f in listdir(cover_dir):
file_name = path.join(cover_dir, f)
mt = mimetypes.guess_type(file_name)[0]
if mt and mt.startswith('image/'):
if path.splitext(f)[0].lower() in IMAGE_NAMES:
return file_name
# Find cover saved by artdisplay plugin
song_info = self.get_song_info(db_entry)
for rb_cover_path in ('~/.gnome2/rhythmbox/covers', '~/.cache/rhythmbox/covers/'):
for file_type in ('jpg', 'png', 'jpeg', 'gif', 'svg'):
cover_file = path.join(path.expanduser(rb_cover_path),
'%s - %s.%s' %
(song_info['artist'],
song_info['album'],
file_type))
cover_file2 = path.join(path.expanduser(rb_cover_path),
'%s - %s.%s' %
(song_info['albumartist'],
song_info['album'],
file_type))
if path.isfile(cover_file):
return cover_file
if path.isfile(cover_file2):
return cover_file2
# No cover found
return DesktopControl.UNKNOWN_COVER
# Not playing
return None
def get_song_info(self, db_entry=None):
song_info = {}
if db_entry:
song_info['title'] = self.db.entry_get(db_entry, rhythmdb.PROP_TITLE)
song_info['artist'] = self.db.entry_get(db_entry, rhythmdb.PROP_ARTIST)
song_info['albumartist'] = self.db.entry_get(db_entry, rhythmdb.PROP_ALBUM_ARTIST)
song_info['album'] = self.db.entry_get(db_entry, rhythmdb.PROP_ALBUM)
return song_info
Blöd ist natürlich immernoch, dass man ungehörte Mp3s zweimal starten muss damit das Cover erscheint – da Rhythmbox beim ersten Mal das Cover erstmal in den Cover Ordner kopiert.
Hier hab ich Datei nochmal zum Download.
Zur Installation in den Ordner /home/$USER/.gnome2/rhythmbox/plugins/desktop-art/ wechseln
und dort die Datei CoverManager.py ersetzen und die CoverManager.pyc löschen. Rhytmbox neustarten (manchmal auch 2 Mal nötig!).
Vllt. hilft das hier ja jemand
Achja, falls jemand weiß wie man den Ersteller (mathias nedrebø) darüber informiert lasst es mich wissen – auf seiner HP ist keine Kontaktmöglichkeit vorhanden!
Falls jemand Probleme hat das Plugin zu aktivieren, unter Ubuntu 10.10 hat es folgende Abhängigkeiten:
python-rsvg und python-gnomedesktop (ehemals gnome-python-desktop)
sudo apt-get install python-rsvg python-gnomedesktop
(Und Python > 2.5, aber Python 2.6 ist bei Ubuntu normal ja dabei!)


