Cygwin - eyeD3 (utf-8)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
alpine
User
Beiträge: 6
Registriert: Dienstag 29. Januar 2008, 12:50

hallo,

im cygwin rufe ich das eyed3 (id3 tag editor) programm auf und übergebe utf8 kodiertere parameter.

jedoch kommt eine fehlermeldung:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 0: ordinal not in range(128)

muss ich python noch für utf8 konfigurieren?

wenn ja, dann sagt mir bitte wie.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alpine hat geschrieben:im cygwin rufe ich das eyed3 (id3 tag editor) programm auf und übergebe utf8 kodiertere parameter.
Hallo alpine!

Hast du auch den Parameter ``--set-encoding=utf8`` mit angegeben?

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alpine
User
Beiträge: 6
Registriert: Dienstag 29. Januar 2008, 12:50

ja klar
Zuletzt geändert von alpine am Dienstag 29. Januar 2008, 17:59, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wo genau tritt denn der Fehler auf? Evtl. ist ein String intern falsch codiert? Poste ggf. doch mal den Code drum herum!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo alpine!

In der Standardeinstellung kann Cygwin mit Umlauten nicht umgehen. Was erkennt das in Cygwin vorhandene Python als Standardencoding?

Code: Alles auswählen

Gerold@gp-work ~
$ python
Python 2.5.1 (r251:54863, May 18 2007, 16:56:43)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.getdefaultlocale()
(None, None)
>>> locale.getpreferredencoding()
'US-ASCII'
>>>
So wie hier wäre es mir unmöglich, Umlaute per Kommandozeile zu übergeben. Nur über eine Pipe (|) von einem anderen Programm...
Und wenn du das Programm von Windows aus aufrufst, dann ist das Encoding "cp1252" oder "cp850".

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alpine
User
Beiträge: 6
Registriert: Dienstag 29. Januar 2008, 12:50

mein voriges problem hab ich schon gelöst da ich für python utf8 codierung unter sitecustomize.py eingestellt habe!
Zuletzt geändert von alpine am Dienstag 29. Januar 2008, 18:00, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Der She-Bang wird unter Windows nicht funzen! Setze doch einfach ein "python" davor! Das sollte klappen, sofern es im Suchpfad steht! Ansonsten eben inkl. Pfad zu Python.
Zuletzt geändert von Hyperion am Dienstag 29. Januar 2008, 17:47, insgesamt 1-mal geändert.
alpine
User
Beiträge: 6
Registriert: Dienstag 29. Januar 2008, 12:50

Hyperion hat geschrieben:Der She-Bang wird unter Windows nicht funzen! Setze doch einfach ein "python" davor! Das sollte klappen.
wie meinst das jetzt genau? wo soll ich das python setzen?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Code: Alles auswählen

python.exe eye3D ...
ggf. eben mit Pfad zu Python, wenn es nicht im Suchpfad steht (Kann man unter Win irgendwo in der Systemsteuerung bei irgend einem "erweitert"-Button einstellen)
alpine
User
Beiträge: 6
Registriert: Dienstag 29. Januar 2008, 12:50

Hyperion hat geschrieben:

Code: Alles auswählen

python.exe eye3D ...
ggf. eben mit Pfad zu Python, wenn es nicht im Suchpfad steht (Kann man unter Win irgendwo in der Systemsteuerung bei irgend einem "erweitert"-Button einstellen)

danke, geht perfekt!
Pfad angabe ist erforderlich!

pls close thread!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo alpine!

eyeD3 lässt sich auch unter Windows installieren.

1.) Lade die aktuelle TAR-Datei mit den Dateien herunter:
http://eyed3.nicfit.net/releases/

2.) Entpacke die TAR-Datei z.B. mit 7Zip http://www.chip.de/downloads/7-Zip-4.57_13004776.html in irgendeinen Ordner.

3.) Kopiere den Ordner *src\eyeD3* in den Python-site-packages-Ordner. Der site-packages-Ordner liegt bei mir hier: *J:\Python25\Lib\site-packages*.

4.) Im site-packages-Ordner liegt jetzt der Ordner *eyD3*. In diesem befindet sich die Datei *__init__.py.in*. Diese muss nach *__init__.py* umbenannt werden.

Fertig ist die Installation. Schon kann eyD3 auch unter Windows direkt benutzt werden.
alpine hat geschrieben:mein voriges problem hab ich schon gelöst da ich für python utf8 codierung unter sitecustomize.py eingestellt habe!
Das ist keine Lösung -- das würde ich wieder rückgängig machen, da davon ALLE Python-Programme betroffen wären und evt. teilweise nicht mehr funktionieren könnten.

Und jetzt kannst du eyD3 direkt im Windows aus Python heraus verwenden und Unicode übergeben. In der eyeD3-Website http://eyed3.nicfit.net/ sind ein paar Beispiele dafür. Allerdings werde ich nicht ganz schlau daraus. Denn der Windows MediaPlayer scheint die neu geschriebenen Tags zu ignorieren, obwohl sie der MPlayer anzeigt.

mfg
Gerold
:-)

PS: Meine Versuche:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import eyeD3


def main():
    #tag = eyeD3.Tag()
    #mp3 = eyeD3.Mp3AudioFile(u"chaosradio_express_067.mp3")
    #print dir(mp3)
    #print dir(mp3.header)
    #tag = mp3.getTag()
    
    
    tag = eyeD3.Tag()
    tag.link(u"chaosradio_express_067.mp3")
    
    
    #print dir(tag)
    
    print repr(tag.getArtist())
    print repr(tag.getAlbum())
    print repr(tag.getTitle())
    
    
    #tag.clear()
    #tag.setVersion(eyeD3.ID3_V2_4)

    tag.setArtist(u"Über den Wolken1")
    tag.setAlbum(u"Österreich in Ürrland")
    tag.setTitle(u"Örmstâd")
    tag.setTextEncoding(eyeD3.UTF_8_ENCODING)
    tag.update()
    
    #tag.update(eyeD3.ID3_V1_1)
    #tag.update(eyeD3.ID3_V2_4)
    
    #print dir(tag)


if __name__ == "__main__":
    main()
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alpine
User
Beiträge: 6
Registriert: Dienstag 29. Januar 2008, 12:50

gerold hat geschrieben:Hallo alpine!

eyeD3 lässt sich auch unter Windows installieren.

1.) Lade die aktuelle TAR-Datei mit den Dateien herunter:
http://eyed3.nicfit.net/releases/

2.) Entpacke die TAR-Datei z.B. mit 7Zip http://www.chip.de/downloads/7-Zip-4.57_13004776.html in irgendeinen Ordner.

3.) Kopiere den Ordner *src\eyeD3* in den Python-site-packages-Ordner. Der site-packages-Ordner liegt bei mir hier: *J:\Python25\Lib\site-packages*.

4.) Im site-packages-Ordner liegt jetzt der Ordner *eyD3*. In diesem befindet sich die Datei *__init__.py.in*. Diese muss nach *__init__.py* umbenannt werden.

Fertig ist die Installation. Schon kann eyD3 auch unter Windows direkt benutzt werden.
und wie? möchte es gerne über command line starten!

bzw wo sollte ich den code einbinden?


die optimale lösung wäre wenns nur ein python.exe gibt und das programm eyed3. und nicht den ganzen ordner... [so wenig dateien wir nur möglich]
kein cygwin und keine istallation von python!

weil dann könnt ich es im script einfach so lösen:
python eyed3 -parameters...


verstehst was ich meine?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alpine hat geschrieben:und wie? möchte es gerne über command line starten!
[...]
kein cygwin und keine istallation von python!
Hallo alpine!

Im TAR-Archiv im Ordner "bin" gibt es die Datei "eyeD3". Diese ist das Kommandozeilenprogramm. Entpacke die Datei "eyeD3" und nenne sie nach "eyed3.py" um. Achte darauf, dass dieser Dateiname **klein** geschrieben werden muss. Ansonsten funktioniert es nicht.

Also, nach der bereits beschriebenen Installation der Abhängigkeiten, kannst du diese Datei einfach wie ein Kommandozeilenprogramm verwenden.

Code: Alles auswählen

eyed3.py <optionen> fielname.mp3
Wenn du Cygwin sonst für nichts brauchst, dann kannst du es deinstallieren. Aber dieses Forum erkennt automatisch, wenn du Python deinstallierst. :lol: Dann wirst du automatisch deaktiviert. :mrgreen:

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten