Was aber dann passiert entzieht sich mir komplett _(5, 50) <-- ??
Ohne Parameter wird die aktuelle Uhrzeit genommen, ansonsten kannst du die Stunden und Minuten manuell angeben, in diesem Beispiel 05:50 Uhr. Die Funktion würde also 350 zurückgeben.
Was aber dann passiert entzieht sich mir komplett _(5, 50) <-- ??
Ohne Parameter wird die aktuelle Uhrzeit genommen, ansonsten kannst du die Stunden und Minuten manuell angeben, in diesem Beispiel 05:50 Uhr. Die Funktion würde also 350 zurückgeben.
Oh Mann .... ich bekomme bald ne Glatze ... *aufshirnklatsch*
Groschen gefallen ....
Die Funktion wird in der If-Abfrage zweimal aufgerufen, einmal ohne Parameter und anschließend ein zweitesmal mit den von mir vorgegebenen Parametern (5, 50) und diese werden dann mit einander verglichen?
Genau. Das ist die einfachste (und sicherste) Lösung die mir einfällt.
Klasse ... Es geht voran
Damit kann ich mich jetzt der Normalisierung der Audiodaten widmen.
Geh ich recht in der Annahme, dass ich dazu ein Programm wie MP3Gain integrieren kann?
Da es von MP3Gain eine Kommandozeilenversion gibt ist das sogar ideal dafür geeignet, da nicht über die grafische Oberfläche gehen musst. Mit
[autoit]FileInstall
[/autoit]kannst MP3Gain-Kommandozeilenversion (sind nur 120KB) auch direkt in dein Script integrieren. Somit muss es keiner der Moderatoren selbst runterladen.
Das hört sich doch schon mal sehr gut an.
Es reicht ja, soweit ich weiß, wenn ich die "mp3gain.exe" aus der original Instalation in mein Arbeitsverzeichnis kopiere?
Ich finde nur nirgendwo die Referenz über die Komandos. *grummls*
Ruf die mp3gain.exe in der cmd mit dem Parameter /? auf.
Super Danke ..
Da komm ich schon mal weiter ... dachte ich
Ich habe mal eine grundlegende Frage:
Am Ende bleibe ich immer wieder an den selben Stellen hängen. Ich habe zum Beispiel aus der Hilfe das folgende ...
RunWait(@ComSpec & " /c " & "commandName")
Aus der mp3gain-Referenz habe ich die folgende Kommandozeile erstellt.
mp3gain /r /m 3 /q "D:\Programm\temp\Nachrichten.mp3"
Wo ich aber zum wiederholten male hängen bleibe ist die Zusammenführung beider Elemente.
Nachdem was ich bis jetzt verstanden habe müßte die Zeile wie folgt aussehen?
[autoit]RunWait(@ComSpec & " /r /m 3 /q " & "mp3gain.exe")
[/autoit]
Vermutlich ist dieser Ansatz schon gänzlich falsch, denn spätestens beim Aufrufen der Datei "D:\Programm\temp\Nachrichten.mp3" bin ich am ende.
Ungetestet:
[autoit]
RunWait(@COMSPEC & ' /c "D:\mp3gain.exe" /r /m 3 /q "D:\Programm\temp\Nachrichten.mp3"')
oder
[/autoit][autoit][/autoit][autoit]ShellExecuteWait('D:\mp3gain.exe','/r /m 3 /q "D:\Programm\temp\Nachrichten.mp3"')
[/autoit]Gibt es eine Möglichkeit den Befehlen für die CMD eine "Pause" mit auf den Weg zu geben?
Ich sehe zwar, dass die cmd aufgerufen wird, aber sie ist so schnell wieder weg, dass ich nicht sehe was passiert.
Juppie
Wieder einen Schritt weiter und einen Teil gelöst
[autoit]#Region ### NORMALISIEREN ###
ShellExecuteWait($scriptpath & 'subs\mp3gain.exe','/c /r /m ' & $db & ' /q "' & $scriptpath & 'temp\' & $news & '"', "", "", @SW_HIDE)
ShellExecuteWait($scriptpath & 'subs\mp3gain.exe','/c /r /m ' & $db & ' /q "' & $scriptpath & 'temp\' & $newsopener & '"', "", "", @SW_HIDE)
ShellExecuteWait($scriptpath & 'subs\mp3gain.exe','/c /r /m ' & $db & ' /q "' & $scriptpath & 'temp\' & $newscloser & '"', "", "", @SW_HIDE)
#EndRegion ### NORMALISIEREN ###
Auf zum nächsten ....
So, das nächste Hürdchen
Ich habe gerade eine extra GUI für die Optionen (Eigenschaften) zum Bprogramm erstellt. In dem sollen der Pfad für die fertige Audiodaei, die gewünschte Normalisierung und auch die Zugangsdaten eingegeben und gespeichert werdenkönnen.
Die Daten sollen dann in die vorhandene "config.ini" gespeichert werden. Aber ich bekomme eine Error-Meldung und weiß nicht warum.
In der "options.au3" schreibe ichmittels eines "SAVE"-Butons ind die config
[autoit]Case $sSave
IniWrite($scriptpath & "data\config.ini", "Options", "$audiopath=" & '"'$audiopath'"')
Bekomme dann aber in der "config.ini" die folgende Fehlermeldung:
[autoit][Options]
$ftp_server="ftpserver.com"
ERROR: synthax error <<<<---------------------------- Diese Meldung
$zugang = "zugang.ini"
$ftp_user="anna"
$ftp_passwd="0815"
$audiopath="C:"
$db = "0"
[Audios}
$news = "Nachrichten.mp3"
$newsopener = "R4P_News_Opener.mp3"
$newscloser = "R4P_News_Closer.mp3"
[Basics]
$scriptpath = "D:\Program"
IniWrite($scriptpath & "data\config.ini", "Options", "$audiopath=" & '"'$audiopath'"')
[/autoit]Hier hast du im letzten Parameter vergessen, den String mit & mit den Variablen zu verketten.
[autoit]IniWrite($scriptpath & "data\config.ini", "Options", '$audiopath="' & $audiopath & '"')
[/autoit]Wäre richtig
Das = wird automatisch eingefügt, du musst nur Schlüssel und Wert angeben.
So sollte es funktionieren:
IniWrite($scriptpath & "data\config.ini", "Options", "$audiopath", $audiopath)
[/autoit]
Wieso der Fehler allerdings in der INI steht kann ich mir auch nicht erklären. Vielleicht ist der 4. Parameter optional, obwohl davon nichts in der Hilfe steht.
Edit: PainTain Nope, das dürfe auch nicht funktionieren.
Ah .. ok ...
Um daraus dann die Variable zurück zu bekommen holen ich mit $var = IniRead ... die Daten da wieder raus und im IniRead füge ich auch die "-Zeichen wieder ein?
"-Zeichen? Bei IniRead sieht das von den Parametern her eigentlich ziemlich gleich aus, nur eben, dass im 4. irgendein Standardwert steht. Wenn das ein String ist hat der Natürlich "-Zeichen.
Das = wird automatisch eingefügt, du musst nur Schlüssel und Wert angeben.
[autoit]
So sollte es funktionieren:IniWrite($scriptpath & "data\config.ini", "Options", "$audiopath", $audiopath)
[/autoit]
Wieso der Fehler allerdings in der INI steht kann ich mir auch nicht erklären. Vielleicht ist der 4. Parameter optional, obwohl davon nichts in der Hilfe steht.Edit: PainTain Nope, das dürfe auch nicht funktionieren.
Uups
Sorry, hatte garnicht auf die Parameter geschaut. Hab nur den anderen Fehler gesehen :pinch:
OK, nur damit ich das jetzt nicht falsch verstehe.
In der Config.ini speichere ich ja meine Variablen ab und da ich nicht jedesmal alle Variablen einzelen einlesen will, hole ich mir die Variablen aus der config.ini mit dem #include.
Damit würde ich IniRead ja nicht benötigen?
Die config.ini ist wie folgt aufgebaut:
[autoit][Options]
$ftp_server="ftpserver.com"
$zugang = "zugang.ini"
$ftp_user="anna"
$ftp_passwd="0815"
$audiopath="C:"
$db = "0"
[Audios}
$news = "Nachrichten.mp3"
$newsopener = "R4P_News_Opener.mp3"
$newscloser = "R4P_News_Closer.mp3"
[Basics]
$scriptpath = "D:\Program"
und aus der options.au3 schribe ich dann mittels IniWrite in die config.ini?
Aber damit ich die config.ini über #include einlesen kann müßen die Variablen ja entsprechend geschrieben sein und dann ist wieder die [section] im weg?
Holla die Waldfee, jetzt verrenn ich mich gerade oder?
Gute Überlegung eigentlich.
Wenn du deinen Textausschnitt als INI benutzt musst du natürlich die Ini-Funktionen benutzen, #include funktioniert da nicht.
Wenn du das als Skript verwendest musst du wie schon gesagt die Sections entfernen, das Schreiben in die Datei wird dann auch etwas komplizierter (falls du das überhaupt musst). Außerdem funktioniert das nur, wenn das Skript nicht kompiliert wurde.
Das heißt, wennich das komplette script später compilieren möchte komm ich um IniRead und IniWrite nicht rum?
und um Variable aus einer Ini-Datei auszulesen muß ich jede Einzelne in jedem Script separat mit IniRead einlesen?