Tüftler Posted March 19, 2013 Share Posted March 19, 2013 @Lars Kommt man denn garnicht an die anderen Einträge in der language Datei ran, das macht doch keinen Sinn es auf die OSD Einträge zu beschränken? Ist sicher für die Skinns gedacht. So wie in der GetSetupValue function wäre das echt praktischer. Kannst du da was machen? Quote Link to comment
Lars_MQ Posted March 19, 2013 Share Posted March 19, 2013 Nein, man kommt da nicht dran. Das ganze ist eine einfache Key->Value Zuordnung. Die Einträge werden nach Sektionen [blahblah] gegliedert. Das liesse sich nicht einfach verwalten, da es zu überschneidungen bei den Key-Werten kommen würde. Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 Naja okay. Macht auch nichts. Ich hab in Post 1 eine neue Version (inkl. source, includes, readme.txt, example.ini) hochgeladen. Es gibt jetzt einen neuen Eintrag "Language" in der config.ini (0=englisch und 1=deutsch). So sehen die Texte jetzt aus: $a_lang[0][0]="Stop Timeshift?"$a_lang[0][1]="Timeshift beenden?"$a_lang[1][0]="Stop Recording?"$a_lang[1][1]="Aktive Aufnahme(n) beenden?" Bessere Formulierungen werden ich gerne übernehmen. Auch andere Sprachen sind möglich. Quote Link to comment
Lars_MQ Posted March 19, 2013 Share Posted March 19, 2013 Also bei Keys sind in der [OSD] Sektion vorhanden. Was ist das problem die zu nutzen? Nachtrag Ah ok ich sehs, die genauen "phrasen" sind im [Dialogs] bereich. Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 Genau und jetzt da wieder selbst was hinzubasteln klappt auch höchstens zufällig. Bei 2 Einträgen und 2 Sprachen ist aber auch noch relativ überschaubar. Quote Link to comment
Lars_MQ Posted March 19, 2013 Share Posted March 19, 2013 Es ist machbar das als GetTranslationEx(const Section, Key, Default : Widestring):String umzusetzen. Es ist dann aber zwingend der Default (in englisch) notwending, da der Key nicht aussage kräftig ist... Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 (edited) Würde mir weiterhelfen. Innerhalb einer definierten Sektion müsste der Key aber doch aussagekräftig sein? Edited June 4, 2014 by nuts Quote Link to comment
Tüftler Posted March 19, 2013 Share Posted March 19, 2013 Das klingt doch super Quote Link to comment
Lars_MQ Posted March 19, 2013 Share Posted March 19, 2013 Nunja das klingt einfach, aber da muss ich ein bisserl intern erstmal umschreiben. Das ist aber machbar. Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 (edited) Super - danke Lars. Eilt jetzt erstmal nicht. Die Lösung tuts jetzt mal und später kann ich das Array für die englischen Basiseinträge soweiso brauchen. @Tüftler: wenn es Probleme mit der neuen Version gibt, bitte gleich melden. Ich exportieren gerade die Hautpfunktionen um das Update von den anderen Skripten (Sleeptimer, ProzesstaskEX, MyActions) leichter zu machen. Könnte sein das da was schief gegangen ist. Edited March 20, 2013 by nuts Quote Link to comment
Tüftler Posted March 20, 2013 Share Posted March 20, 2013 Sieht erstmal i.O. aus, danke soweit. Quote Link to comment
Tüftler Posted March 20, 2013 Share Posted March 20, 2013 Wie deaktivierst du eigentlich die Meldung des DVBViewers oder des RS wenn noch eine Aufnahme ansteht? Läuft noch ein Recording und man drückt bei deinem Hinweisfenster zum Beenden auf Ja meldet sich anschließend der DVBViewer oder der RS, kurz bevor der Standby ausgelöst wird. Eigentlich sollte man nicht in den Versuch kommen Ja auszuwählen, aber es geht halt (ob der dann in den Away-Modus geht?). Ich habe es jedenfalls nicht geschafft die Meldungen vom DVBViewer oder des RS zu verbannen. Quote Link to comment
nuts Posted March 20, 2013 Author Share Posted March 20, 2013 Das Problem betrifft nur die Sofortaufnahmen oder? Ich befürchte die Meldung lässt sich nicht abschalten. Anders gefragt: Wie soll der Ablauf genau sein? Quote Link to comment
nuts Posted March 20, 2013 Author Share Posted March 20, 2013 Ich probier später mal ob ich über den Eventhandler auf die Meldung reagieren kann. JA => weiter im Skript Nein=> Skript beenden Dann könnte man meine eigenen Funktionen auch weglassen. Oder übersehe ich da was? Quote Link to comment
Tüftler Posted March 20, 2013 Share Posted March 20, 2013 Ähm muss ich untersuchen, ich habe aber immer mit der Sofortaufnahme getestet. Ich könnte mir vorstellen bei einer Ja-Auswahl die Aufnahme stoppen zu lassen und dann Standby/Beenden/Was_auch_immer auszuführen. Dann sollte auch keine Meldung mehr kommen. Quote Link to comment
nuts Posted March 20, 2013 Author Share Posted March 20, 2013 (edited) Ich könnte mir vorstellen bei einer Ja-Auswahl die Aufnahme stoppen zu lassen und dann Standby/Beenden/Was_auch_immer auszuführen. Das Problem ist ich kann keine komplette Skriptsprache abstrahieren und komplizierte "Wenn ... Dann" Verknüpfungen einbauen. Können schon, aber dann ist die Konfiguration irgendwann so kompliziert wie das Skript selbst zu schreiben. Ich durchdenke das nochmal. Bei mir läuft wie gesagt ein 24/7 TV-Server und daher habe ich mit Aufnahmen am lokalen Client wenig zu tun. Edited March 20, 2013 by nuts Quote Link to comment
Tüftler Posted March 20, 2013 Share Posted March 20, 2013 Dann kann ich das für eine Sofortaufnahme auch selbst behandeln, ich starte dein Programm eh über die command.vbs Quote Link to comment
Tjod Posted March 20, 2013 Share Posted March 20, 2013 Ich habe das Topic jetzt nicht komplett verfolgt und bin mir nicht sich ob die Idee jetzt zu viel des guten ist. (Selber brauch ich den Script nicht) Aber bei der Behandlung ist es wahrscheinlich sinnvoll zwischen Sofortaufnahme und Aufnahmen aus den Timeshiftpuffer zu unterscheiden. Da Aufnahmen aus den Timeshiftpuffer auch bei der Verwendung vom RS im DVBViewer laufen. Bei Sofortaufnahmen muss man beim beenden vom DVBViewer nur einen Endzeit Setzen. Dann laufen die wie jede andere Aufnahme einfach im RS weiter. Quote Link to comment
nuts Posted March 20, 2013 Author Share Posted March 20, 2013 (edited) 2 Sachen könnte ich machen. Einen neuen Befehl "DVBClose=1" einführen. Dort könnte ich im Skript alle möglichen Dinge zusammenfassen (Endzeit setzen usw.). Und optional für jeden "Escape" Fall (checkrecording, checktimetime, checkproceslist usw.) eine Escape Sektion aufrufen. Standby-Sektion => Aufnahme erkannt => Dialog Ja => Sektion Standby weiter abarbeiten Dialog Nein => Sektion "EscapeStandby" (falls vorhanden) abarbeiten Das wird dann aber schon recht wirr. Edited March 20, 2013 by nuts Quote Link to comment
nuts Posted March 20, 2013 Author Share Posted March 20, 2013 (edited) Ähm jetzt verstehe ich das erst richtig. Der DVBViewer frag nur danach ob die Sofortaufnahme beendet werden soll. Da muss man aber sehr viel beachten. @Tüftler: An welche Behandlung für die Sofortaufnahmen hattest du gedacht? Edited March 20, 2013 by nuts Quote Link to comment
Tüftler Posted March 20, 2013 Share Posted March 20, 2013 (edited) Super wäre eine nach-Aufnahme-Änderung der laufenden Timer auf die hinterlegte Beenden-Aktion (Standby) etc. Ein Sofortaufnahme Timer könnte entweder direkt gestoppt werden oder aber auch das Menü mit "Aufnahme nach 10min" etc. stoppen aufrufen. Da bin ich mir aber nicht sicher ob man das machen kann. Mir würde direkt stoppen(killen) genügen. Also: Prüfen auf laufende Aufnahme Prüfen ob da ein Instant Recording dabei ist Instant Recording killen oder aber Menü aufrufen Laufende Aufnahmen mit der entsprechenden nach-Aufnahme-Aktion versehen evtl. Close Graph hinterher schicken Edited March 20, 2013 by Tüftler Quote Link to comment
Tüftler Posted March 20, 2013 Share Posted March 20, 2013 (edited) könnte so aussehen i = 1 Timernumber = 0 do while (i < 4 and Timernumber < TimerManager.Count) if TimerManager.Item(Timernumber).Instant then 'prüfen ob Instant Timer TimerManager.Remove(Timernumber) 'Timer direkt entfernen (oder aber Fenstermenü aufrufen) Else If Timermanager.Item(Timernumber).Recording Then If TimerManager.Item(Timernumber).Executable Then 'prüfen ob Timerkollision vorliegt '->>>> Das geht wohl anders <<<<<<- TimerManager.Item(Timernumber).DVBVShutdown = 2 'Standby oder ander Endaktion zuweisen '->>>>??????????????????<<<<<<- End If End If i = i + 1 end if Timernumber = Timernumber + 1 loop Edited March 20, 2013 by Tüftler Quote Link to comment
nuts Posted March 20, 2013 Author Share Posted March 20, 2013 Ok ich schau mal was sich da machen lässt. Die laufenden Sofortaufnahmen möchte ich eigentlich nicht ungefragt killen. Mal sehn was morgen dabei rauskommt. Quote Link to comment
Tüftler Posted March 20, 2013 Share Posted March 20, 2013 Mit TimerManager.Item(Timernumber).EndTime kriegst du zumindest die Endzeit raus und mit TimerManager.Item(Timernumber).done kann man prüfen ob er wirklich fertig ist. Dann könnte man auch die Endaktion (Standby etc.) durch dein Programm automatisch einleiten. Quote Link to comment
Tjod Posted March 20, 2013 Share Posted March 20, 2013 Sofortaufnahmen haben bei den meisten (hier) eine Dauer von knapp 24 Stunden. Und sobald die Endzeit geändert wurde sind es normale Aufnahmen. Quote Link to comment
Tüftler Posted March 20, 2013 Share Posted March 20, 2013 (edited) Tja aber wie kommen wir an die Endzeitänderung einer Sofortaufnahme ran? WindowManager.ShowWindow(28) wird bei einer Sofortaufnahme nicht gefüllt und bringt das OSD komplett zum erliegen. Und ein SendCommand(34) führt ins leere wenn bei einer Sofortaufnahme "Schließe Graph" gemacht wurde. Dann müsste man erst die ChannelID der Sofortaufnahme ermitteln, tunen und dann die Action senden. -> OK, Letzter Sender würde gehen. Edited March 20, 2013 by Tüftler Quote Link to comment
nuts Posted March 20, 2013 Author Share Posted March 20, 2013 Sobald die Endzeit bei jeder Sofortaufnahme gesetzt wird ist man mit den Aufnahmen im DVBViewer (mit aktivierter RS unterstützung) fertig. Dann dürften auch keine Meldungen vom DVBViewer selbst mehr kommen? Mit aktivierter RS Unterstützung werden vom DVBViewer selbst sowieso nur Sofortaufnahmen (ohne geänderte Endzeit) angezeigt? Abfragen ob der Recodringservice abgewürgt werden darf kommt dann im nächsten Schritt. Folgende Änderung hab ich mir ausgedacht: ; checkrecording=0 => disable | 1 => skript bei treffer beenden | custom string => ruft eine benutzerdefinierte Sektion in der config.ini ; checktimeshift=0 => disable | 1 => skript bei treffer beenden | custom string => ruft eine benutzerdefinierte Sektion in der config.ini ; checkrecordingRS=0 => disable | 1 => skript bei treffer beenden | custom string => ruft eine benutzerdefinierte Sektion in der config.ini z.B. checkrecording=isrecording Dann noch die Endzeit setzen um die Sofortaufnahmen loszuwerden und eine Funktion um das Skript zu pausieren bis alle Aufnahmen beendet sind? Quote Link to comment
Tüftler Posted March 21, 2013 Share Posted March 21, 2013 Ja, sollte so genügen denke ich Quote Link to comment
nuts Posted March 21, 2013 Author Share Posted March 21, 2013 Ganz so einfach ist das doch nicht ^^ Muss heute mal Flussdiagramme malen. Die Sofortaufnahmen muss ich auf jeden Fall loswerden. Das stört sogar meine Konfig. mit 24/7 Server. und eine Funktion um das Skript zu pausieren bis alle Aufnahmen beendet sind? Da habe ich mich auch erstmal dagegen entschieden. Ich befürchte da muss man ne ganze Menge Benutzeraktionen abfangen (manueller standby usw.) um das Skirpt nicht in einer endlosschleife festzusetzen. Eigene Skripte lassen sich ja problemlos einbinden. Dort können dann solche Spezialsachen geregelt werden. Quote Link to comment
nuts Posted March 26, 2013 Author Share Posted March 26, 2013 (edited) Hm ich hänge leider fest. Werde die Sofortaufnahmen nicht los. Einfach die gewünschte Endzeit setzen reicht nicht um den Timer endgültig dem Recordingservice zu übergeben. @Lars: Wie muss ich vorgehen um eine Sofortaufnahme in eine richtige Aufnahme umzuwandeln? Edited March 26, 2013 by nuts Quote Link to comment
Tjod Posted March 26, 2013 Share Posted March 26, 2013 Das sollte eigentlich gehen wenn du eine neue Endzeit setzt. Quote Link to comment
nuts Posted March 26, 2013 Author Share Posted March 26, 2013 Ah ja schön. Selbst ausgetrickst. Ich hatte zu Testzwecken "Sende Timer an RS" deaktiviert. Quote Link to comment
nuts Posted March 26, 2013 Author Share Posted March 26, 2013 (edited) Anbei mal eine neue Testversion. edit\ Testversion gelöscht! Neuste Version im Startpost! Neuer Befehl um die Sofortaufnahmen loszuwerden: ; instantrec (0= disable | 1=create timer from instantrec - endtime from epg | else=custom endtimer ) Die Endzeit aus den EPG Einträgen auszulesen habe ich noch nicht eingebaut, d.h. man muss den Endtimer selbst vorgeben (Systemzeit + X Minuten) Außerdem kann man die "Check" Funktionen auf Wunsch in eine weitere Sektion umbiegen. Bsp: [standby]instantrec=120 => alle Sofortaufnahmen werden (mit aktivierter RS Unterstützung) in richtige Timer umgewandel (Endzeit = Systemzeot +120 Minuten) checktimeshift=1 => überpürft ob timeshift aktiv istcheckrecording=1 => überprüft ob im DVBV Aufnahmen laufen (dürfte mit aktivierter RS unterstützung jetzt nicht mehr vorkommen)checkrecordingRS=StandbyRS => überprüft ob im RS Aufnahmen laufen und ruft bei gefundenen Aufnahmen die Sektion "StandbyRS" in der config.ini auf (muss vorher natürlich angelegt werden). Sendcommand=12326 => sollten keine Aufnahmen im RS laufen geht es normal hier weiter shutdown=32Resume=1 Edited May 16, 2013 by nuts Quote Link to comment
Tüftler Posted April 2, 2013 Share Posted April 2, 2013 Hallo nuts, meine Ostersuche brachte ein Script zum Handling der Sofortaufnahmen zu Tage. Beschreibung: Es prüft alle Sofortaufnahmetimer und ruft das InstantRecordingfenster auf. Dort kann/sollte der Nutzer die Endzeit setzen. Anhand der gesetzten Endzeit wird dann eine Wartezeit ermittelt die zurückgegeben werden kann oder im Script direkt gehandelt werden könnte. Jetzt die Frage, was soll passieren wenn keine Zeit gesetzt wurde? Script und extended-exit automatisch beenden -> entspricht dann Abbruch durch Nutzer Abfrage ob das Standbyhandling abgebrochen werden soll weil keine Endzeit gesetzt Dann noch die Frage was wir damit anfangen wollen. Wie kann ich das Script am Besten einbinden, also welchen Befehl nutze ich zum Aufruf dafür? Übergebe ich die ermittelte Wartezeit an deine Routine und kann diese das Pausieren übernehmen, geht das? Wenn mein Script auch das Warten regelt kann man dann auf eine Rückmeldung des Scriptes warten und dann das Handling fortsetzen oder sollte man extended-exit beenden und nach Abarbeitung extended-exit anschließend erneut mit Standby/Ruhezustand aufrufen? Gruß Tüftler Quote Link to comment
nuts Posted April 2, 2013 Author Share Posted April 2, 2013 (edited) Du kannst folgende Befehle verwenden um Skripte einzubinden: ; run (runs an external program) ; runwait (runs an external program and wait until its finished) ; shellexecute ; shellexecutewait ; runbybatch (creates a batchfile that runs an external program and delets the batchfile afterwards) runwait und shellexecutewait pausiert mein Skript bis das eingebundene Skript beendet wurde. Danach wird die Sektion weiter abgearbeitet. Ich stelle mir das ca. so vor: 1. extended-exit aufrufen und solange keine Konflikte auftreten ganz durchlaufen. 2. Bei timeshift Yes/No Dialog 3. Bei Sofortaufnahmen Timer an den RS schicken (bzw. dein Skript verwenden) 4. Bei RS Aufnahmen eine eigene Sektion aufrufen (ohne Standby, aber z.B. DVBViewer schließen + AVR +TV ausschalten schließen oder ähnliches) 5. alles weitere dem Recordingservice überlassen (dafür hab ich z.B. auch ein Skript http://www.DVBViewer.tv/forum/topic/51926-processtasksex/ ) Edited April 2, 2013 by nuts Quote Link to comment
Tüftler Posted April 3, 2013 Share Posted April 3, 2013 Du kannst folgende Befehle verwenden um Skripte einzubinden: runwait und shellexecutewait pausiert mein Skript bis das eingebundene Skript beendet wurde. Danach wird die Sektion weiter abgearbeitet. Ich stelle mir das ca. so vor: 1. extended-exit aufrufen und solange keine Konflikte auftreten ganz durchlaufen. 2. Bei timeshift Yes/No Dialog 3. Bei Sofortaufnahmen Timer an den RS schicken (bzw. dein Skript verwenden) 4. Bei RS Aufnahmen eine eigene Sektion aufrufen (ohne Standby, aber z.B. DVBViewer schließen + AVR +TV ausschalten schließen oder ähnliches) 5. alles weitere dem Recordingservice überlassen (dafür hab ich z.B. auch ein Skript http://www.DVBViewer.tv/forum/topic/51926-processtasksex/ ) Zu 3.) wie hänge ich das jetzt wo rein, also in welche Sektion? Bleibt Checkrecording=1 aktiv und wo springt der hin das ich mein Script aufrufen kann? der Aufruf sollte ungefähr so aussehen können: ; shellexecute DVBVPath & /Scripts/instantrecording.vbs /Standby /Extended Exit_v2 der erste Parameter gibt die Ende Aktion nach Beendigung aller Sofortaufnahmen an der zweite Parameter den Pfad zur Extende Exit.exe ; shellexecutewait scheint Flach zu fallen da ein Abbrechen schlicht nicht vorgesehen ist, oder? Also Script wird aufgerufen und durch Nutzer abgebrochen -> Rückkehr zur Extended Exit Sektion und dort wird stur fortgefahren, oder kann man auch Rückgabewerte des Scripts verarbeiten, sprich einen Abbruch verarbeiten? Quote Link to comment
nuts Posted April 3, 2013 Author Share Posted April 3, 2013 (edited) [standby] checktimeshift=1 shellexecutewait=&\deinscript => wird die Sofortaufnahmen los oder eben nicht checkrecording=standbyaufnahme => sollten alle Sofortaufnahmen beim RS gelandet sein geht es weiter in der Sektion, ansonsten wird Sektion "standbyaufnahme" aufgerufen checkrecordingRS=standbyrecordingservice => keine Aufnahmen im RS und es geht weiter in der Sektion, ansonsten wird Sektion "standbyrecordingservice" aufgerufen sendcommand=12326 => schließe DVBViewer / close DVBViewer sleep=1 => warte 1 Sekunde resume=1 => warte auf die PBT_APMRESUMESUSPEND Nachricht und weiter geht mit der Sektion "Resume" (Extended Exit_config.ini) shutdown=32 => Standby durch das Skript selbst auslösen So? Shellexecutewait sollte schon verwendet werden, damit mein Skript auch pausiert bis dein Skript fertig ist. Ganz hilfreich wäre mal eine Schritt für Schritt Beschreibung was passieren soll. Edited April 3, 2013 by nuts Quote Link to comment
Tüftler Posted April 3, 2013 Share Posted April 3, 2013 Nutzer drückt Standby = Extended Exit Prüfung auf laufende Sofortaufnahmen, wenn ja Script starten das Script geht alle Sofortaufnahmen durch (Sender tunen und InstantRecording Fenster aufrufen) und der Nutzer kann eine Auswahl für die Aufnahmelänge bestimmen -> sollte er ohne Auswahl abbrechen erscheint ein Dialog mit Script beenden (und damit auch Standby) oder erneut Aufnahmelänge bestimmen (kann ja sein der Nutzer hat ausversehen abgebrochen) das Script pausiert 1 min länger als die längste eingestellte Sofortaufnahmedauer und könnte dann wieder an Extended-Exit übergeben ... um weiter abzuarbeiten ... so wäre mein Plan. Wenn Extended-Exit auf das Script wartet brauche ich keine Endeaktion und keinen Pfad übergeben. Nur habe ich keinen Plan wie man dann eine gewollte Abbruchbedingung bei dir abfängt? Ich hoffe das war verständlich genug. Quote Link to comment
nuts Posted April 3, 2013 Author Share Posted April 3, 2013 (edited) Also warten geht ja z.B. über Shellexecutewait Wenn du dein Skript postest übernehme ich das auch gern direkt in mein Skript. Wird dann der Tüftler-Spezialbefehl. Je nach Ergebnis lässt sich darauf dann bestimmt auch reagieren. Skript zu Skript Kommunikation wollte ich eigentlich nicht einbauen. Dazu bräuchte ich eine Art Mini TCP-Server oder sowas. Das wird dann schon relativ kompliziert. Das Skript während laufenden Aufnahmen zu pausieren halte ich nach wie vor für keine gute Idee! Mit meinem Exit Skript soll man eigentlich nur auf bestehende "Zustände" reagieren können und ansonsten die Liste abarbeiten. Während der laufenden Aufnahme kann viel passieren (Benutzer kehrt zurück und will weiter TV schauen, Benutzer drückt Power-Knopf am Gehäuse, ..., die Liste ist endlos). Und am Ende hat man die gleiche Standby Problematik wie im DVBViewer oder zahlreichen anderen Programmen. Willst du nicht eher eine Standardaufgabe im Recordingservice hinterlegen? Mit dem verlinkten Skript (funktioniert quasi genauso wie Extended-Exit) kannst du nach jeder Aufnahme den Standby auslösen (die escape Sachen sind dort auch drin). Edited April 3, 2013 by nuts Quote Link to comment
Tüftler Posted April 3, 2013 Share Posted April 3, 2013 Na klar poste ich es dann. Im Prinzip kann ich das Script-pausieren auch weglassen, da der RS die Aufnahmen ja bekommt. Muss ich halt darauf bestehen das der Nutzer eine Endzeit setzt. Alles weitere wird dann im Extended-exit geregelt Ich probiere morgen noch ein bissl und schlafe mal drüber, dann schmeiß ich das hier rein. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.