« Posts tagged Cover

Kleines Bugfix für Desktop Art (Plugin für Rhythmbox)

Hi @all,

ich hab heute mal wieder das Plugin Desktop Art für Ryhtmbox von mathias nedrebø ausprobiert.

So sieht Desktop Art aus!

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!)

Probleme mit Covern in MP3s unter Android/HTC Player

Hi @all,

heute mit dem HTC Desire gekämpft um die Vorherrschaft bei den Covern im HTC Player und es gibt massiv viele Stolpersteine.

Ziel ist es, das alle MP3s Cover haben. Ich benutze hier die Methode, dass die Cover in der Mp3 (im MP3 Tag) hinterlegt sind. Keine extra Bilddateien in Albenordner.

Schöner Anblick, nicht?

Um anderen Nutzern das mühselige Suchen zu ersparen, hier die wichtigsten Tipps/Tricks von mir zusammengefasst:

1) Wenn die SD eingelegt wurde (oder nach einer USB-Session wieder freigegeben wurde) dauert es erstmal eine Weile, bis der Player alles aktualisiert hat. Merkt man auch a) am Ruckeln bei der Titelliste und b) am Rundenkreis rechts oben in der Titelliste (wobei der manchmal fehlt.).

2) Bedingung, damit der HTC Player die Mp3s komplett neu einliest, ist ein neuer Ordnername.

Einmal eingelesen, kann man Dateinamen, Tags, Cover ändern – der HTC Player liest die Datei nicht komplett neu ein, vielmehr “mappt” er sie irgendwie intern.  Habe hier 1-2 Stunden rumgetan, bis ich rausfand dass er nie aktualisiert, obwohl er kurz arbeitet nach einlegen der SD.

Einfach den Ordner wo die Mp3s liegen umbennen, schwupps aktualisiert er alles.

Manchmal hilft es den Albumthumbs Ordner zu löschen auf der SD (dort sind die Bildchen der Cover drin nach dem der Player sie generiert hat.), aber er generiert die danach genauso wieder neu – ohne die Dateien vollständig neu einzulesen.

Neustart hilft normalerweise eher nichts.

3) Korrekte ID3-Tags. Ich benutze immer MP3Tag dafür. Ladet einfach alle Mp3s rein und speichert einmal alle wieder, damit setzt MP3Tag die Cover automatisch richtig in eine einheitliche und korrekte Version.(Komische Tagversionen und irgendwelche Fehler erzeugten bei mir korrupte Cover!)

4) Korrekte Cover. Wichtigste Bedingung ist, dass die Cover in den Mp3s im Format Jpeg sind. GIF und PNG mag er garnicht. Dann zeigt er entweder kein Cover an, oder ein total kaputtes Cover.

5) Habt ihr 1-4 beachtet und jetzt auch schön den Albumthumbsordner gelöscht und den Ordner in dem die Mp3s liegen umbennannt, liest der HTC Player die Mp3s neu ein und alle sollten Cover besitzen. Aber damit geht gleich ein neues Problem an den Start: Manche Lieder haben Cover anderer Lieder. Das ist aber kein “Randomfehler”, sondern liegt am Albumtitel. Tatsächlich schafft es der HTC Player, alle Mp3s ganz ohne Album z.B. (Also leerer Albumtitel im Tag) ein gleiches Cover zuzuweisen. Habt ihr 2 Alben 2 verschiedener Künstler die gleich heißen, habt ihr pech. Müsst ihr eins von beiden umbennenen. Ich hatte ja gehofft ein unterschiedlicher Albuminterpret würde helfen – dem ist nicht so. Es könnte aber auch sein, dass es nur Dateien in einem Ordner betrifft. Bei mir trat das Problem jedenfalls bei Mp3s auf, die eben gemischt in einem Ordner liegen, weil sie nicht in zu einem Album gehören.

6) Sollte ein Cover weiterhin Probleme machen, spiele es in einer geraden Auflösung ein. z.B. 300*300 oder 500*500  und nicht 305*297 oder sowas – das mag der HTC Player nicht immer. (Wenn alles andere(obige) passt, gehts aber meist.)

WICHTIG: Nicht vergessen, immer nach jeder Aktion bzw. vor jedem neuen Test den Ordner umbennen, indem die MP3s liegen. (Bei mir wechselt der Name immer zwischen MP3s und Musik z.B.). Ausserdem den Albumthumbs-Ordner löschen. Ausserdem die SD Karte mal rein/raus tun bzw. über USB freigeben und wieder nicht mehr freigeben.Diese Schritte sind wichtig! Sonst seht ihr immer das “alte” Ergebnis. Für das Neueinlesen braucht der HTC Player dann einige Zeit!

(Falls jemand einen besseren Weg kennt, den Player dazu zu bekommen alle Mp3s komplett neu einzulesen – immer her damit!)

Hoffe es hat irgendwem geholfen, das von HTC gekochte Spüppchen zu meistern ;)