Eintragen vom Metadaten in MP3-Dateien in Winamp automatisieren

  • Hallo,

    ich habe ein Problem beim ändern / anpassen der Metadaten in Winamp.

    Ich passe häufig die Daten wie z.B. Album-Titel auf meine persönlichen Bedürfnisse an.
    Dazu lade ich zunächst die MP3 in Winamp, markiere alle MP3 und öffne mit dem Tastendruck "ALT" + "3" das Fenster "Titelinformationen".

    Dann habe ich folgendes Skript geschrieben:

    WinWait("Titelinformationen","Metadaten",1)
    If Not WinActive("Titelinformationen","Metadaten") Then WinActivate("Titelinformationen","Metadaten")
    WinWaitActive("Titelinformationen","Metadaten",1)
    Send("{TAB}")
    Sleep(100)
    Send("{TAB}")
    Sleep(100)
    Send("{TAB}")
    Sleep(100)
    Send("{TAB}")
    Sleep(100)
    Send("{TAB}")
    Sleep(100)
    Send("Titel der CD")
    Sleep(100)
    Send("{ENTER}")

    Damit wird das Fenster, wie von mir gewünscht, abgearbeitet und geschlossen.

    Ich möchte aber die Titelinformationen aller Lieder einer CD automatisiert bearbeiten.

    Wenn der Enter-Befehl im Skript abgearbeitet ist und das Fenster sich schließt, öffnet sich nach einer kurzen Wartezeit (ca. 0,5 Sek) das Fenster "Titelinformationen" der 2. MP3-Datei usw.

    Theoretisch könnte ich die o.a. Befehle so oft in das Skript kopieren, wie die CD Titel hat.

    Das ist aber nicht zufriedenstellend.

    Ich suche nach einer Möglichkeit, dass das Skript erkennt, ob das Fenster sich erneut geöffnet hat und die Befehle abgearbeitet werden sollen, und zwar bis alle Fenster abgearbeitet sind (ggf. in einer Schleife o.ä.).

    Stelle mir zunächst eine Abfrage vor, die prüft, ob das Fenster geöffnet ist, dabei ist eine Wartezeit von ca. 0,5 Sek zu berücksichtigen.
    Wenn das Fenster vorhanden ist, soll es aktiviert und dann sollen die Befehle abgearbeitet werden. Anschließend sollen alle weiteren Fenster in gleicher Weise abgearbeitet werden. Wenn kein Fenster mehr vorhanden ist, soll das Skript enden.

    Habe schon mit "If Then" und "While" herum probiert, habe aber leider keine Lösung finden können. Hier in der Themen-Suche bin ich leider auch nicht fündig geworden.

    Schon mal Danke im Voraus für Eure Unterstützung.


    Gruß Tom

    Einmal editiert, zuletzt von Onkel-tom (27. September 2011 um 01:49)

  • Muss das unbedingt mit WinAMP sein?
    Direkt die ID3-Tags der MP3s zu bearbeiten ist einfacher.

    Ich hätte dir ein paar UDFs dafür:
    TagLib ist einsetzbar, ID3v2library ebenfalls und id3lib hab ich mal angefangen aber nie fertig gestellt. Welche willst du haben?

  • Hallo,

    vielen Dank für die schnellen Antworten.

    Habe mir Eure Vorschläge angesehen. Der Tagscanner erscheint mir einfachsten in der Handhabung zu sein und sehr viel schneller als die Bearbeitung mit Wimamp. Damit kann man ganze Alben in einem Zug umbenennen. Geht sehr einfach und schnell.

    Damit wäre mein Problem eigentlich gelöst.


    Bleibt aber noch das generelle Problem bei der Skripterstellung:

    Es sind mehrere Fenster mit gleichem Titel geöffnet, an die ich mehrere Befehle sende (mehrmals "{TAB}, dann einen kurzen Text, dann "{ENTER}" um das Fenster zu schließen.
    Nach dem Schließen öffnet sich nach kurzer Wartezeit (ca. 0,5 Sek) das nächste Fenster mit gleichem Titel, das in gleicher Weise abgearbeitet werden soll.

    Ich suche jetzt eine Möglichkeit, dass erkannt wird, dass ein Fenster geöffnet ist, die Befehle abgearbeitet werden und dass anschließend, unter Berücksichtigung der Pause, erkannt wird, ob ein weiteres Fenster mit gleichem Titel geöffnet ist, das abgearbeitet werden muss oder ob kein weiteres Fenster vorhanden ist und das Skript beendet werden kann.

    Ich habe keine Idee, wie ich das angehen soll.


    Gruß Tom

  • Hallo,

    ein Fenster, wenn auch der gleiche Name hat einen unterschiedlichen handle.. ein Beispiel...

    öffne zwei Editor Fenster. Beide heißen Unbenannt - Editor

    [autoit]

    #include <Array.au3>
    $array = WinList("Unbenannt - Editor")
    _ArrayDisplay($array)

    [/autoit]

    dann zeigt er Die in Col1 das handle zu dem Fenstern...

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Hallo,

    habe noch ein bisschen gelesen und herumprobiert.

    mit dieser Schleife funktioniert das Skript so, wie es mir vorgestellt habe:


    While 1

    If WinExists("Titelinformationen","Metadaten") Then
    WinActivate("Titelinformationen","Metadaten")
    Sleep (100)
    Send("{TAB}")
    Sleep(100)
    Send("{TAB}")
    Sleep(100)
    Send("{TAB}")
    Sleep(100)
    Send("{TAB}")
    Sleep(100)
    Send("{TAB}")
    Sleep(100)
    Send("Daten der CD")
    Sleep(100)
    Send("{ENTER}")
    Sleep(500) ; Pause bis das nächste Fenster sich öffnet
    Else
    MsgBox(4096, "Kein Fenster mehr vorhanden", "Das Skript schließt sich nach 5 Sekunden von alleine", 5)
    Exit

    EndIf


    WEnd


    Ich vermute aber, dass das nur eine 1 b Lösung ist.


    Gruß Tom