Ich hatte mal das Problem, daß eine .wav-Datei vom Windows „gesperrt“ war… Insbesondere wenn ich während des Abspielens im ISDN-Modul aufgelegt hatte. Danach wurde diese Datei nicht mehr überschrieben. Deshalb verwende ich einfach
$Dateiname=time();
Sieht es denn wenigstens so aus, als würde der VoiceReader-Direkt die Datei generieren? Dann fehlt jedenfalls nicht mehr viel!
Oh - ich seh grad: Der „Datei ersetzen“-Klick erfolgt NUR, wenn Parameter 3 (=Dateiname) NICHT angegeben ist! Wenn man also einen Dateinamen angibt, der schon existiert, müsste genau dieser Fehler auftreten.
(PS: Mein Server (und damit die Heizung) läuft wieder und die Wohnung wird langsam wieder warm! )
Wie bereits weiter oben beschrieben, gibt es oft Probleme, wenn man versucht eine bestehene Datei zu überschreiben. Eigentlich wollte ich ursprünglich alles als „Neue Datei.wav“ speichern. Leider ist das löschen oder „verändern“ dieser Dateien aber nicht mehr möglich, wenn diese inzwischen in irgendeiner Form aufgerufen (=abgespielt) wurden.
Deshalb verwende ich jetzt den Timecode
$Dateiname=time();
um sicher zu stellen, daß die Datei wirklich neu ist.
Natürlich muß man dann gelegentlich die ganzen .wav-Dateien löschen - das übernimmt bei mir auch ein Script - immer unmittelbar nach jedem Rechner-Neustart.
Wenn gewünscht, kann ich dieses Löschen-Script ja auch noch reinstellen. Das ist aber echt gefährlich: Wenn da jemand „C:/“ als Parameter angibt, ist sein Rechner nachher Fabrik-Neu!
lol nee ich such nur einen Befehl, der mir die Datei löscht… bei mir wird nur 4 mal am tag eine mp3 generiert ( wettermeldung ) mehr hab ich erstmal net vor.
Ich muß nur wissen wie die heißt, um sie von einem anderen skript abspielen zu lassen.
Also gut: Jetzt habe ich das Script etwas verändert. Es wartet jetzt IMMER (unabhängig vom dritten Parameter) nach dem „Speichern“-Klich eine Sekunde lang auf das Fenster „…wollen Sie diese Datei ersetzen?“ und klickt ggf. drauf.
Damit läuft es jetzt auch durch, wenn man als Dateinamen (dritter Parameter) eine vorhandene Datei angibt.
Das auskommentieren/deaktivieren einer offenbar überflüssigen Zeile, macht es jetzt noch einen Hauch zuverlässiger, wenn man seeehr kurze Texte generiert. Bei meinen heutigen Tests habe ich festgestellt, daß der VoiceReader-Direkt sonst bereits fertig ist, bevor das Script überhaupt nach dem Statusbalken sucht.
Außerdem habe ich dem Script einen unverfänglicheren Namen gegeben: VR-Remote!
MfG, douglas882
PS: Die Verknüpfung zum VoiceReader-Direkt in dieser Version lautet auch wieder: „C:\Program Files\linguatec\VoiceReader\VRDirect.exe“ (Von dort wird es gestartet, falls beim Aufruf des Scripts das Programm nicht schon läuft.)
:rolleyes:Sehr gut, danke
für alle die die länge in Sekunden des erstellten Files brauchen ( So wie ich ):
$Titel = GetValueString(42285 /*[Squeeze Box\Squeezebox\FileMP3]*/); // Abzuspielender Titel
WAC_PlayFile(14318 /*[Media Player]*/, $Titel); // Spiel in Mediaplayer ab...
IPS_Sleep(500); //... das dauert ein wenig...
$q=GetValueString(42691 /*[Media Player\Track Length]*/); //...wie lang ist das File ?
WAC_Stop(14318 /*[Media Player]*/); // Stoppe
$feld = explode(':',$q); // so den String in Sekunden...
$time=(($feld[0]*60)+($feld[1])+2); // umwandeln..+2 sekunden
$timems=($time*1000); // Millisekunden brauchen wir auch
If ($timems > 1500 ) // wenn weniger als 1,5 Sekunde, dann per Sleep
{
SetValueBoolean(10090 /*[Squeeze Box\Squeezebox\Meldung]*/,true);
IPS_SetScriptTimer(11869 /*[Squeeze Box\Squeezebox\Meldung false]*/, $time);// Script Meldung false setzt wieder auf false
}
else
{
SetValueBoolean(10090 /*[Squeeze Box\Squeezebox\Meldung]*/, true);
IPS_Sleep($timems);
SetValueBoolean(10090 /*[Squeeze Box\Squeezebox\Meldung]*/, false);
}
hiermit wird die Variable Meldung, die errechneten Sekunden der Länge eines Audiofiles auf True gehalten, ohne es komplett abspielen zu müssen. ! Ist ne Krücke über den Mediaplayer, geht aber.
Hallo
Bei mir lief das AutoIt Script nicht.
bzw: Voice Reader wurde nicht gestartet.
Hab dann dein Script geaendert von:
WinWait(„Voice“)
in
WinWait(„Voice Reader Direct“)
Dann geht es auch bei mir .
Damit nicht immer das Fenster zu sehen ist
welches sich beim Abspeichern oeffnet hab ich folgendes
hinzugefuegt:
WinSetTrans(„Öffnen“,"",0)
Dann ist das Fenster komplett transparent.
Koennte natuerlich auch mit WinMove irgenwohin geschoben werden.
Hallo
Eben ist mir noch was aufgefallen.
Hab eben mal meinem Dateiname in welches geschrieben werden soll
von test in test.mp3 geaendert.
So weit so gut - danach diese wieder rueckgaengig gemacht dabei aber
den Punkt vergessen.
Dabei passiert folgendes - es wird garnicht mehr nachgefragt ob
ueberschrieben werden soll. Es wird einfach ueberschrieben.
freut mich, daß Du das anpassen konntest - offenbar kennst Du Dich mit AutoIt aus…
Was mich aber wundert:
Hab dann dein Script geaendert von:
WinWait(„Voice“)
in
WinWait(„Voice Reader Direct“)
…das müsste doch die „Suche“ noch weiter einschränken!? Vermutlich hat das Script vorher schon diesen „Start-PopUp“ von dem Programm als „Voice“ interpretiert und kräftig drauf los geklickt, bevor VoiceReader einsatzbereit war.
WinSetTrans("Öffnen","",128)
Wieso „Öffnen“? Bei heißt das Fenster „Speichern unter“… Liegt vielleicht doch an der anderen Version des VoiceReaders.
Dabei passiert folgendes - es wird garnicht mehr nachgefragt ob
ueberschrieben werden soll. Es wird einfach ueberschrieben.
Wurde jetzt nicht eher eine neue Datei erstellt („Test.mp3“ und „Test…mp3“)? Also wenn dieser „Fehler“ zuverlässig und wiederholt auftritt, hätte man sich den natürlich zu Nutze machen können. (Dann hätte es den Umbau von heute morgen gar nicht gebraucht… )
Habs mit „Speichern unter“ probiert ging aber nicht.
Hab mir mit dem AutoIt Befehl „WinList“ alle
Fenster mit Namen ausgegeben und da war der Fenstername
„Öffnen“
Beim Filenamen mit Punkt wird keine test…mp3 erstellt sondern test.mp3
Wie auch immer
PS: Bei WinSetTrans bedeutet der Wert 128 halbdurchsichtig - noch - wegen debugging