GruberMa Posted February 4, 2014 Author Posted February 4, 2014 ich schaffe es nicht dass da script "RS-EPG-Update.vbs" den DVBViewer beendet. Hallo Mario, Das "RS-EPG-Update"-Script ist nicht für den DVBViewer gedacht, sondern nur für den Recording Service. Wenn du das EPG über den DVBViewer updaten möchtest, dann empfehle ich das "DVBViewer-EPG-Update"-Script, das ebenfalls im ersten Post dieses Threads zum Download zur Verfügung steht. Davon abgesehen: Prinzipiell ist dein Code in Ordnung, allerdings fehlt die Funktion GetDVBVObject: Function GetDVBVObject(Obj) On Error Resume Next Err.Clear Set Obj=GetObject(, "DVBViewerServer.DVBViewer") If Err.Number=424 OR Err.Number=429 Then Set Obj=Nothing GetDVBVObject=false Else GetDVBVObject=true End If on error goto 0 End Function LG, GruberMa Quote
Mario K. Posted February 4, 2014 Posted February 4, 2014 hallo GruberMa, danke für die schnelle Antwort, bei mit läuft der Recordingservice und der DVBViewer am gleichen PC, d.h. der RecordingService greift auf meine DVB-S2 Karte zu und der DVBViewer dann mit RSTP Device auf den Recordingservice Habe den Code von dir ausprobiert und das script beendet sich. hast du da noch eine idee wo ich da ansetzen könnte um das problem zu lösen ? G, Mario Quote
GruberMa Posted February 5, 2014 Author Posted February 5, 2014 Hallo Mario, Bevor wir weiter nach Fehlern suchen, sollten wir uns über das gewünschte Einsatzszenario der Scripts einig sein. Ich sehe da zwei Möglichkeiten: Möglichkeit A: EPG-Update über das Recording Service (die von mir empfohlene Variante) RS-EPG-Update.vbs stößt den EPG-Update-Task im Recording Service an, überwacht diesen und schickt den PC danach wieder in den Schlafmodus. Um den DVBViewer kümmert sich dieses Script nicht. Sollte beim Start des PCs der DVBViewer automatisch laufen und vielleicht sogar die einzige vorhandene TV-Karte belegen, so ist der Einsatz des DVB Task Scheduler aus dem Mitgliederbereich zu überlegen. Dieser kann den DVBViewer beim Aufwachen beenden bzw. in einen Nicht-Wiedergabe-Modus versetzen. Alternativ kann man das Script aus http://www.DVBViewer.tv/forum/topic/54013-scheduler-und-DVBViewer-529/?p=402856 nutzen. Du kannst auch gerne RS-EPG-Update.vbs um das Beenden des DVBViewers erweitern, bei künfitigen Updates des Scripts geht diese Erweiterung aber natürlich verloren. Möglichkeit B: Update des EPG über den DVBViewer DVBViewer-EPG-Update.vbs startet den DVBViewer, sucht pro Transponder einen Kanal heraus und stellt diesen entweder für eine vorher definierte Zeit ein oder solange bis eine gewisse Zeit lang keine neuen EPG-Einträge dazukommen. Die Erkennung neuer EPG-Einträge ist über das COM-Interface des DVBViewers leider nicht möglich, daher muss das Script tricksen in dem die EPG-Datei zuerst gelöscht wird; dann wird die die Anzahl der EPG-Einträge überwacht - ändert sie sich x Sekunden nicht, nimmt das Script das Ende des EPG-Updates an und wechselt zum nächsten Kanal. Im Recording Service erfolgt diese Erkennung direkt an Hand des Datenstroms, was wesentlich zuverlässiger ist. Zum Thema "Das Script beendet sich" Wenn sich das Script einfach beendet und in der Log-Datei keinen Fehler vermerkt, dann ist sehr wahrscheinlich, dass der Fehler direkt im Script liegt und nicht abgefangen wurde (was bei VBS sehr mühsam ist) bzw. werden kann. In dem Fall empfiehlt es sich, das Script nicht über den Task Scheduler zu starten, sondern direkt von der Eingabeaufforderung aus. So schließt sich das Fenster nicht und man sieht, welche Fehlermeldung cscript.exe ausgibt. LG, GruberMa Quote
Mario K. Posted February 5, 2014 Posted February 5, 2014 Hallo GruberMa danke für den goldenen Tipp mit dem Start aus der Eingabeaufforderung, ich habe den Fehler gefunden, die variable DVBViewer war nicht angelegt nun geht alles so wie ich mir das vorstelle. Danke nochmals für deine Hilfe !! G, Mario Quote
yogi2009 Posted November 9, 2014 Posted November 9, 2014 Leider sind die Konfigurationsmöglichkeiten des Recording Service noch nicht mit denen des DVBViewer EPG Update Scripts vergleichbar, die Durchlaufzeiten sind aber anscheinend kürzer (hier für Astra 19,2 jetzt ca. 30 Minuten statt früher 40 Minuten). Hallo, welche Parameter sind ausschlaggebend für die Laufzeit des Scripts für den Recording Service? Mir ist es nicht gelungen auf die o.g. ca. 30 Minuten zu kommen. Nach drei Stunden steigt die Anzahl der Einträge (lt. Web-Interface) weiter und weiter. Nach meinem bisherigen Verständnis wird die Zeit in erster Linie von der Anzahl Sender in der Senderliste beeinflußt? Ist das korrekt? Ich habe meine Senderliste (Astra 19,2°) inzwischen annähernd auf meine Favoritenliste zusammengeschrumpft (< 50 Sender) und das Skript kommt weiterhin zu keinem Ende. In den RS-Einstellungen liegt der Wert bei 30s je Transponder. Gibt es weitere nenneswerte Einflussfaktoren? Quote
GruberMa Posted November 10, 2014 Author Posted November 10, 2014 Guten Morgen, Es gibt einige Faktoren, die die Dauer des EPG-Updates beeinflussen. Das Update erfolgt prinzipiell pro Transponder, nicht pro Sender. Jeder Sender kann unterschiedliche Datenmengen übertragen (wie viele Tage in die Zukunft hinein wird das EPG gesendet, wie viel Text pro Sendung ist dabei etc.) und die Daten meines Wissens auch in unterschiedlichen Geschwindigkeiten übertragen. Ich persönlich nutze nur Astra 19,2° Ost; für eine Lauf über alle Transponder benötigt das Recording Service (ohne vorherige Löschung der epg.dat) knapp unter 30 Minuten. Nehme ich den Nachbarsatelliten (Hotbird oder Eutelsat, ich bin mir nicht sicher) dazu, erhöht sich die Durchlaufzeit auf insgesamt fast eine Stunde. Hast du nach dem Schrumpfen der Senderliste im DVBViewer das Recording Service neu gestartet? Das RS liest die Senderliste nämlich nur beim Neustart ein. LG, GruberMa Quote
yogi2009 Posted November 11, 2014 Posted November 11, 2014 Hast du nach dem Schrumpfen der Senderliste im DVBViewer das Recording Service neu gestartet? Das RS liest die Senderliste nämlich nur beim Neustart ein. Hallo GruberMa, ja ich hatte den RS neu gestartet. Ich gehe auch davon aus, dass das passt, da erst nach dem Neustart in der Web-Oberfläche die geänderte Senderliste ersichtlich war. Ich habe auch nur die Senderliste für den Astra 19,2° Ost im Zugriff, die anderen hatte ich bereits im Vorfeld gelöscht, da sie für mich nicht in Frage kommen. Daher war ich überrascht, dass ich so arge Probleme mit der Laufzeit habe. Haben neben der Senderliste selbst die Dateien im Ordner "Transponders" evt. noch einen Einfluss? VG yogi2009 Quote
GruberMa Posted November 11, 2014 Author Posted November 11, 2014 Nein, die Dateien im Ordner "Transponders" haben keinen Einfluss. Wie lange dauert das EPG-Update, wenn du nicht das Script nutzt sondern das Recording Service alles alleine machen lässt? Dazu musst du im Recording Service Web zum Reiter "Aufgaben" wechseln, "EPG-Aktualisierung starten" auswählen und dann im Reiter "Status" beobachten, wie lange dort "EPG Update" steht. Das RS EPG Update Script macht im Prinzip genau das. Quote
Tjod Posted November 11, 2014 Posted November 11, 2014 Das RS EPG Update Script macht im Prinzip genau das.Das stimmt nicht mehr ganz (seit RS 1.23) . Beim RS internen Update ist die Zeit pro Transponder nur noch die maximale Zeit. Wenn vorher erkannt wird das alle Daten auf dem Transponder eingesammelt wurden geht es früher mit dem nächsten weiter. http://www.DVBViewer.tv/forum/topic/19628-recording-service-beta/?p=378578 Quote
GruberMa Posted November 11, 2014 Author Posted November 11, 2014 Das passt schon so: Das Recording Service EPG Update Script, von dem wir hier sprechen, startet den RS-internen Task und wartet auf dessen Ende. Das DVBViewer EPG Update Script funktioniert anders, aber darum geht es in diesem Fall nicht. LG, GruberMa Quote
yogi2009 Posted November 11, 2014 Posted November 11, 2014 Wie lange dauert das EPG-Update, wenn du nicht das Script nutzt sondern das Recording Service alles alleine machen lässt? Rufe ich den Task direkt aus dem WebService heraus auf, läuft das Update in <20 Minuten durch. Ich habe im direkten Anschluss noch einmal das Skript gestartet. Was mir dabei auffällt ist, dass während des Updates im WebService beim Sender nicht "EPG-Update + der aktuelle Transponder" steht. Ebenfalls ist das Feld "nächstes EPG-Update" nicht gefüllt. Das Skript gibt hingegen minütlich die Meldung "EPG Update läuft noch, nächste Überprüfung in 1m" aus. Die Anzahl EPG-Einträge auf der Statusseite steigt auch nicht mehr (aktuell > 137.000; ist das ein erwarteter Wert?). Was noch steigt ist der Wert "Seiten". Was sagt dieser aus? VG Quote
GruberMa Posted November 11, 2014 Author Posted November 11, 2014 Der Wert "Seiten" hat meiner Meinung nach nichts mit dem EPG zu tun. Ich glaube, der Wert gibt die Anzahl der ausgelieferten Web-Seiten an (der Wert erhöht sich bei jedem manuellen Aktualisieren der Seite mit F5, und auch bei jedem automatischen Aktualisieren alle paar Sekunden). Wenn das Script ausgibt, dass das EPG-Update noch läuft, dann hat auf http://127.0.0.1:8089/api/status.html der XML-Tag "epgudate" nicht den Wert "0" (EPG Update läuft nicht) oder "2" (EPG Update in der Warteschlange), sondern einen anderen - und das heißt, dass das EPG-Update läuft. Trifft das auch auf deinem System zu? Bitte poste zusätzlich den letzten Scriptlauf aus "RS-EPG-Update.log". Quote
yogi2009 Posted November 12, 2014 Posted November 12, 2014 Beim laufenden Script werden folgende Werte ausgegeben: <epgudate>0</epgudate> <epgbefore>3</epgbefore> <epgafter>3</epgafter> Das würde sich dann wohl mit meiner Beobachtung im UI des WebService decken. Hier der letzte Eintrag aus der Log-Datei: 2014-11-11 21:35:08 ***** Start *****2014-11-11 21:35:08 Script Startzeit: 2014-11-11 21:35:07.2014-11-11 21:35:08 Script-Version "2013-02-16 12:00".2014-11-11 21:35:08 Finale Einstellungen in der Form "Variable=Wert" sind:2014-11-11 21:35:08 LanguageFile="de.ini"2014-11-11 21:35:08 LogFile="RS-EPG-Update.log"2014-11-11 21:35:08 RSStandby=Falsch2014-11-11 21:35:08 RunsToKeepInLog=52014-11-11 21:35:08 ServiceURL="http://127.0.0.1:8089"2014-11-11 21:35:08 TimeToWaitForEPGUpdateStart=52014-11-11 21:35:08 TimeToWaitForRSStandbyPrerequisites=152014-11-11 21:35:08 WaitBeforeStart=302014-11-11 21:35:08 Warte 30 Sekunden (Hochfahren nach Ruhemodus etc.).2014-11-11 21:35:38 5 Durchläufe des Scripts in der Logdatei behalten.2014-11-11 21:35:38 Die ersten 29 Zeilen wurden aus der Logdatei entfernt.2014-11-11 21:35:38 Starte EPG-Update-Task und warte auf Fertigstellung.2014-11-11 21:35:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:36:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:37:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:38:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:39:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:40:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:41:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:42:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:43:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:44:43 EPG-Update läuft noch, nächste Überprüfung in 1m.2014-11-11 21:45:43 EPG-Update läuft noch, nächste Überprüfung in 1m. [...] Die letzte Meldung kommt stundenlang weiter. Quote
GruberMa Posted November 12, 2014 Author Posted November 12, 2014 Hallo yogi2009, Der Eintrag "<epgudate>0</epgudate>" stimmt mich nachdenklich - er bedeutet nämlich, dass das EPG-Update gar nicht läuft und dass ein vom Script getätigter HTTP-Aufruf keinen Fehler zurückgibt (oder ich ihn falsch auswerte). Bitte teste folgendes: Alle Clients, die auf den Recording Service zugreifen, beenden Sicherstellen, dass nur das Recording Service auf die TV-Karte zugreift In Reiter 1 die URL http://127.0.0.1:8089/api/status.html aufrufen In Reiter 2 die URL http://127.0.0.1:8089/status.html?aktion=status aufrufen In Reiter 3 die URL http://127.0.0.1:8089/tasks.html?task=EPGStop&aktion=tasks aufrufen, um ein eventuell bereits laufendes EPG-Update zu beenden Reiter 1 aktualisieren, hier darf nun nichts mehr von einem EPG-Update stehen Reiter 2 aktualisieren, hier muss der XML-Tag "epgupdate" den Wert "0" haben In Reiter 4 die URL http://127.0.0.1:8089/tasks.html?task=EPGStart&aktion=tasks aufrufen, um ein EPG-Update zu starten Reiter 1 aktualisieren, hier muss nun etwas von einem EPG-Update stehen Reiter 2 aktualisieren, hier muss der XML-Tag "epgupdate" den Wert "1" haben Ersetze auf keinen Fall 127.0.0.1 durch localhost und nutze unbedingt den Internet Explorer. LG, GruberMa Quote
yogi2009 Posted November 12, 2014 Posted November 12, 2014 Hallo GruberMa, ich bin die Punkte der Reihe nach durchgegangen, funktioniert ohne Probleme. Gruß yogi2009 Quote
GruberMa Posted November 12, 2014 Author Posted November 12, 2014 (edited) Mir gehen langsam die Ideen aus. Kannst du bitte die Schritte 1-7 nochmals durchführen, direkt im Anschluss das RS EPG Update Script starten und während das Script läuft die Schritte 9 und 10?Wenn das nicht funktioniert, stimmt wohl etwas mit dem HTTP-Aufruf in meinem Code nicht. Welches Betriebssystem nutzt du, welche Version des Windows Script Host ("cscript.exe /?") und welchen Internet Explorer?Möglicherweise gibt es ein Problem mit den MSXML-Komponenten, die ich für den Zugriff auf HTML verwende. Bitte speichere folgenden Code als .vbs-Datei, führe ihn aus und schick mir das Ergebnis: ServiceURL="http://127.0.0.1:8089" wscript.echo "============================================================" wscript.echo "ServiceURL=" & ServiceURL wscript.echo wscript.echo "============================================================" wscript.echo "Schritt 1: /api/status.html abfragen" ReturnString=HTTPPost(ServiceURL & "/api/status.html", "") wscript.echo "ReturnString: """ & ReturnString & """" wscript.echo wscript.echo "============================================================" wscript.echo "Schritt 2: EPGStop und /api/status.html abfragen" HTTPPost ServiceURL & "/tasks.html", "task=EPGStop&aktion=tasks" wscript.sleep(2000) ReturnString=HTTPPost(ServiceURL & "/api/status.html", "") wscript.echo "ReturnString: """ & ReturnString & """" wscript.echo wscript.echo "============================================================" wscript.echo "Schritt 3: EPGStart und /api/status.html abfragen" HTTPPost ServiceURL & "/tasks.html", "task=EPGStart&aktion=tasks" wscript.sleep(2000) ReturnString=HTTPPost(ServiceURL & "/api/status.html", "") wscript.echo "ReturnString: """ & ReturnString & """" wscript.echo Function HTTPPost(sUrl, sRequest) set oHTTP=WScript.CreateObject("MSXML2.ServerXMLHTTP") oHTTP.open "Get", sUrl & "?" & sRequest ,false oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" on error resume next oHTTP.send wscript.echo err.source & " error " & err.number & ": """ & err.description & """" HTTPPost = oHTTP.responseText End Function Edited November 13, 2014 by GruberMa Quote
yogi2009 Posted November 13, 2014 Posted November 13, 2014 Hallo GruberMa, manchmal sieht man den Wald vor lauter Bäumen nicht. Nach reiflicher Überlegung (und ich hoffe, dass ich auf den letzten 10 Seiten bzw. im Chancgelog nicht etwas elementares Überlesen habe ), habe ich mir die Frage gestellt, woher das vbs-Script überhaupt die Berechtigung bekommt, auf den WebService zuzugreifen? Schließlich habe ich dort zu Beginn nirgendwo die Möglichkeit gefunden, die Benutzerdaten zu hinterlegen... Leider bin ich nicht früher drüber gestolpert, aber ich hatte immer den Eindruck, da er das EPG gestartet zu haben schien, dass er somit auch Zugriff haben müsste. Ich habe gerade das PW in der RS-Konfiguration entfernt und siehe da, das Update läuft. Besteht die Möglichkeit die Benutzerdaten im Script abzulegen (mir ist bewusst, dass das im Klartext passieren würde) bzw. die URL um die Benutzerdaten zu erweitern? Und ich hätte noch die Anregung, dass über einen Parameter neben dem Standby auch Hibernate als Anschlussaktion ausgewählt werden kann. Die Stelle im Code habe ich gefunden, dass würde ich mir im Zweifel auch selbst reinprogrammieren... Evt. gibt es ja weitere Interessierte an dieser Option. Auf jeden Fall vielen, vielen Dank für Deine schnellen Antworten und Ideen!!! Quote
GruberMa Posted November 17, 2014 Author Posted November 17, 2014 ### New/Changed/Fixed in "2014-11-13 21:00" ### Neu/Geändert/Behoben in "2014-11-13 21:00" .) New: The script now works with password protected Recording Service. Thanks to "yogi2009" from the DVBViewer forum! Neu: Das Script funktioniert nun auch mit einem passwortgeschützen Recording Service. Danke an "yogi2009" aus dem DVBViewer-Forum! .) New: Unknown <epgudate> values are now logged. Neu: Unbekannte <epgudate>-Werte werden nun im Log ausgegeben. .) New: Variable "ActionAfterEPGUpdate" defines what to do after the EPG update - nothing, standby, hibernate or shutdown. Neu: Die Variable "ActionAfterEPGUpdate" gibt an, was nach dem EPG-Update zu tun ist - nichts, Standby, Hibernate oder Shutdown. .) Changed: The error source of HTTP connection errors is now logged. Geändert: Die Fehlerquelle von HTTP-Verbindungsfehlern wird nun im Log ausgegeben. Quote
Murmeltier Posted January 17, 2015 Posted January 17, 2015 (edited) Hallo, ich habe noch Fehler in dem Script gefunden. In Zeile 856 und 1008 und 1026 und 1168 muß else OrbPosString=vchannels(lactchannel,15)end if korrigiert werden zu else OrbPosString=cdbl(vchannels(lactchannel,15))end if bzw. OrbPosString=cdbl(vchannels(n,15)) je nachdem wie es vorher aussah. (Es muß immer von cdbl(...) umklammert werden) Ansonsten überspringt er bei mir die DVB-T Sender. Alternativ kann man auch OrbPosString="terrestrisch" o.ä. schreiben. Es geht halt um die Sat-Position, die er bei DVB-T Sendern nicht, oder nur als Null auslesen kann. Edited January 17, 2015 by Murmeltier Quote
GruberMa Posted January 17, 2015 Author Posted January 17, 2015 Hallo, ich habe noch Fehler in dem Script gefunden. OrbPosString=vchannels(lactchannel,15) korrigiert werden zu OrbPosString=cdbl(vchannels(lactchannel,15)) Ansonsten überspringt er bei mir die DVB-T Sender. Hallo Murmeltier, Danke für den Hinweis! Eine aktualisierte Version steht in Kürze zur Verfügung. LG, GruberMa Quote
GruberMa Posted January 17, 2015 Author Posted January 17, 2015 (edited) DVBViewer EPG Update Script http://www.DVBViewer.tv/forum/topic/41624-epg-update-script/ ### New/Changed/Fixed in "2015-01-17 23:30" ### Neu/Geändert/Behoben in "2015-01-17 23:30" .) Fixed: Terrestrial channel were skipped due to an error when reading/converting the frequency. Thanks to DVBViewer forum users "Murmeltier"! Behoben: Terrestrische Kanäle wurden ausgelassen auf Grund eines Fehlers beim Auslesen/Konvertieren der Frequenz. Danke an DVBViewer Forumsbenutzer "Murmeltier"! DVBViewer-EPG-Update 2015-01-17 2330.zip Edited January 17, 2015 by GruberMa Quote
Murmeltier Posted January 24, 2015 Posted January 24, 2015 Hallo GruberMa, ich habe auch noch ein paar Erweiterungsideen für das Skript, die man eventuell noch einbauen könnte. Ich habe das Skript nämlich für meine Bedürfnisse etwas umprogrammiert. So habe ich das Löschen der vorhandenen EPG-Daten auf optional geschaltet. Das könnte man auch über eine INI-Variable einrichten, je nachdem, wie man es gerade haben möchte. So könnte man das Skript je nach Bedarf mal mit Komplett Neu-Update und mal nur zum auffüllen starten. Ich habe bei mir auch den zwangsweisen Neustart deaktiviert, da es auch so funktioniert hat. Ich kann jedoch nicht beurteilen, ob man das benötigt oder nicht. Dann habe ich noch die LogMSG-Anzeige beim Kanaldurchlauf/Einlesen deaktiviert, da es bei meinen 7000 Kanälen (3 Satelliten, mehrere Listen + DVB-T) sehr lange dauert. Seitdem läuft es viel schneller durch. Interessant wäre auch, wenn er in der LogMSG-Anzeige die Anzahl der aktualisierten Einträge anzeigt und nicht nur temporär während des Durchlaufs. Vielleicht findest Du ja was davon sinnvoll und möchtest es für alle in Dein Skript integrieren. Gruß und Danke für das Skript Murmeltier Quote
GruberMa Posted January 25, 2015 Author Posted January 25, 2015 Hallo GruberMa, ich habe auch noch ein paar Erweiterungsideen für das Skript, die man eventuell noch einbauen könnte. Ich habe das Skript nämlich für meine Bedürfnisse etwas umprogrammiert. So habe ich das Löschen der vorhandenen EPG-Daten auf optional geschaltet. Das könnte man auch über eine INI-Variable einrichten, je nachdem, wie man es gerade haben möchte. So könnte man das Skript je nach Bedarf mal mit Komplett Neu-Update und mal nur zum auffüllen starten. Ich habe bei mir auch den zwangsweisen Neustart deaktiviert, da es auch so funktioniert hat. Ich kann jedoch nicht beurteilen, ob man das benötigt oder nicht. Dann habe ich noch die LogMSG-Anzeige beim Kanaldurchlauf/Einlesen deaktiviert, da es bei meinen 7000 Kanälen (3 Satelliten, mehrere Listen + DVB-T) sehr lange dauert. Seitdem läuft es viel schneller durch. Interessant wäre auch, wenn er in der LogMSG-Anzeige die Anzahl der aktualisierten Einträge anzeigt und nicht nur temporär während des Durchlaufs. Vielleicht findest Du ja was davon sinnvoll und möchtest es für alle in Dein Skript integrieren. Gruß und Danke für das Skript Murmeltier Hallo Murmeltier, Optionales Löschen der EPG-Datei: Siehe Option "DynamicTuneTime" samt Erklärung in der sample.ini. Es hat einen. Damit das EPG-Update bei "DynamicTuneTime=true" richtig funktioniert, muss zwingend eine bestimmte Reihenfolge eingehalten werden: DVBViewer beenden, epg.dat löschen, DVBViewer neu starten, EPG-Update einlesen. Grund ist, dass die EPG-Daten als Stream daherkommen und das Script bei einer bestehenden epg.dat mit bereits bestehenden EPG-Einträgen nicht feststellen kann, ob der DVBViewer den EPG-Stream schon komplett eingelesen hat oder nicht. Wird die epg.dat aber vorher gelöscht, kann man es an einer stabilen Anzahl von EPG-Einträgen über eine gewisse Zeit (5 Sekunden) sehr sicher feststellen. Zwangsweisen Neustart deaktivieren: Falls es sich um den zwangsweisen Neustart des DVBViewers bei "DynamicTuneTime=true" handelt, siehe den Absatz oben. Geht es um die Aktion, die am Ende des Scripts ausgeführt wird, siehe Option "ShutdownActionID" samt Erklärung in der sample.ini. Es kann jede ID aus der actions.ini verwendet werden. Wie lange dauert bei dir das Enumerieren der Sender/Transponder? Die cmd.exe bremst oft bei der Ausgabe von Text - minimiere das Fenster mal während des Enumerierens, es wird ziemlich sicher schneller durchlaufen. In der Anzeige kann ich leider nur die Gesamtanzahl der EPG-Einträge pro Transponder anzeigen, neue und aktualisierte sind nicht unterscheidbar. Hätte es wirklich zusätzlichen, sinnvollen Informationsgehalt die gesamte Anzahl der EPG-Einträge pro Transponder in der Logdatei zu protokollieren? LG, GruberMa Quote
Murmeltier Posted January 26, 2015 Posted January 26, 2015 Hallo GruberMa, danke für die ausführliche Rückmeldung. Also ich habe bei mir folgende Zeilen deaktiviert: 'EPG löschen'Set filesys = CreateObject("Scripting.FileSystemObject")'If filesys.FileExists(DVBVEPGFilePath) Then 'filesys.DeleteFile DVBVEPGFilePath, true'End If Trotzdem funktioniert es bei mir mit dynamic tune time bestens. Der zählt die bereits vorliegenden EPG Einträge einfach weiter hoch, bis es 5s stabil ist und schaltet dann weiter (z.b. von ca. 150000 zu 16000 Einträgen) . Ich hatte gedacht, daß der Hintergedanke der EPG-Löschung sei, daß man immer die alleraktuellsten EPG-Einträge haben möchte, falls es Programmänderungen o.ä. gibt. Ich möchte aber einfach nur, daß überall EPG-Einträge da sind. Neustart: Nee, ich meinte, daß er bei mir immer einmal den DVBViewer beendet und dann wieder neustartet. Die VB-Zeilen sind in dem gleichen Block wie oben (DVBViewer.sendcommand(12326) und Do until DVBVProcessCount=0). Die hatte ich bei mir auch deaktiviert, funktionierte bei mir trotzdem alles einwandfrei. Keine Ahnung, ob das an meinem ollen XP-System o.ä. liegt. Das Durchlaufen der Kanäle zieht sich schon hin, ich habe auch nicht die neuesten Rechner (Pi mal Daumen 2min vs 5-10sek). Zwischendruch hatte ich es sogar noch als OSD-Text ergänzt, weil ich es cool fand, habe es dann aber gänzlich deaktiviert, damit es schneller durchläuft. cmd lief immer im vordergrund, könnte man natürlich noch testen es zu minimieren, aber ich benötige es eh nicht, bringt ja keine echte info, wenn man nicht gerade am debuggen ist. Gesamtanzahl EPG-Einträge: Ja, da hast Du schon recht. Bahnbrechenden Informationsgehalt gewinnt man dadurch nicht, aber ich dachte man könnte es relativ einfach durch Variablen lösen, indem man den Anfangs- und Endwert ausliest und voneinander subtrahiert. Interessant für mich zu sehen wieviele es sind, wenn ich EPG-Einträge nur auffülle. Gruß, Murmeltier Quote
GruberMa Posted January 26, 2015 Author Posted January 26, 2015 Trotzdem funktioniert es bei mir mit dynamic tune time bestens. Es ist reines Glück, dass auf dem Transponder innerhalb von fünf Sekunden neue EPG-Einträge gesendet werden; technisch ist das nicht gesichert. Die epg.dat kann nur geleert werden, wenn der DVBViewer nicht läuft. Details zu beiden Themen siehe http://www.DVBViewer.tv/forum/topic/8529-com-was-fehlt-noch/page-3#entry374704. Quote
Murmeltier Posted January 28, 2015 Posted January 28, 2015 Hallo GruberMa, verstehe. Da ich also keine der von Dir aufgeführten Problemfrequenzen antune, kann ich es also getrost bei mir weiter ohne EPG-Löschung und Neustart laufen lassen. Die einzige auch nicht perfekte Lösung, die mir auf die Schnelle einfällt wäre wie folgt. Man fragt direkt zu Beginn EPGManager.GetAsArray ab und beginnt die Dynamictunetime überhaupt erst dann zu zählen, wenn eine erste Änderung bei wiederholter Abfrage von EPGManager.GetAsArray aufgetreten ist. Das ganze begrenzt auf maximal 100 Sekunden oder ähnlich. Problematisch natürlich, wenn das Skript bereits kurz zuvor lief und alle EPG-Einträge voll eingelesen sind. Oder man schafft eine editierbare Ausnahmeliste für Sender, bei denen diese Problematik bekannt ist. Diese werden dann mit zusätzlicher Zeit angetunt o.ä. Alles nicht perfekt, nur mal laut gedacht, also am Besten bleibt das Skript wie es ist, bis es weitere Zugriffsmöglichkeiten gibt. Gruß, Murmeltier Quote
GruberMa Posted July 19, 2015 Author Posted July 19, 2015 Recording Service EPG Update Script http://www.DVBViewer.tv/forum/topic/41624-epg-update-script/ ### New/Changed/Fixed in "2015-07-18 10:00" ### Neu/Geändert/Behoben in "2015-07-18 10:00" .) Changed: The script now only works with Recording Service 1.31 and above, as the new API (status2.html) ist used. Geändert: Das Script funktioniert nur noch mit Recording Service 1.31 und höher, da die neue API (status2.html) genutzt wird. Quote
GruberMa Posted September 30, 2016 Author Posted September 30, 2016 (edited) Recording Service EPG Update Script http://www.DVBViewer.tv/forum/topic/41624-epg-update-script/ ### New/Changed/Fixed in "2016-09-30 20:00"### Neu/Geändert/Behoben in "2016-09-30 20:00".) New: Option CreateEPGEntry creates a 7 day EPG entry so that channels that do not send an EPG show up in all DVBViewer EPG windows. Neu: Die Option CreateEPGEntry erstellt einen siebentägigen EPG-Eintrag so dass Sender, die kein EPG senden, in allen EPG-Fenstern des DVBViewer auftauchen. Edited September 30, 2016 by GruberMa Quote
GruberMa Posted October 1, 2016 Author Posted October 1, 2016 Recording Service EPG Update Scripthttp://www.DVBViewer.tv/forum/topic/41624-epg-update-script/ ### New/Changed/Fixed in "2016-10-01 14:00"### Neu/Geändert/Behoben in "2016-10-01 14:00".) New: The option ClearEPG clears all existing EPG data before the EPG update is started. Neu: Die Option ClearEPG löscht alle bestehenden EPG-Daten bevor das EPG-Update gestartet wird..) Changed: CreateEPGEntry now creates one EPG entry for today and for each of the next seven days, each one lasting 24 hours. Geändert: CreateEPGEntry erstellt jetzt einen EPG-Eintrag für heute und für jeden der nächsten sieben Tage, jewils mit 24 Stunden Laufzeit. Quote
GruberMa Posted October 13, 2016 Author Posted October 13, 2016 Recording Service EPG Update Scripthttp://www.DVBViewer.tv/forum/topic/41624-epg-update-script/ ### New/Changed/Fixed in "2016-10-09 20:00"### Neu/Geändert/Behoben in "2016-10-09 20:00".) Changed: CreateEPGEntry now creates missing EPG entries for today and tomorrow. Geändert: CreateEPGEntry erstellt jetzt fehlende EPG-Einträge für heute und morgen. Quote
mcgyver Posted October 23, 2016 Posted October 23, 2016 (edited) Moin Moin, ich habe zu diesem Thema eine Frage: (auch wenn das hier nicht unbedingt die richtige Stelle ist) Ist es evtl. Möglich, das Update Script so anzupassen, das die EPG Daten eines DVBs Senders auch für einen IPTV Sender (z.B. Pro7 DVBs auch für Pro7 IPTV von Telekom Entertain) genutzt werden?Hintergrund ist das Problem das es bei den IPTV Sendern oft nur sehr wenige EPG Daten gibt und ich dieses gerne erweitern würde, gerade mit blick auf die AutoTimer Funktion des RS.Falls ihr da Ideen und Tipps habt, wäre ich euch Dankbar THX mcgyver Edited October 23, 2016 by mcgyver Quote
GruberMa Posted October 23, 2016 Author Posted October 23, 2016 Moin Moin, ich habe zu diesem Thema eine Frage: (auch wenn das hier nicht unbedingt die richtige Stelle ist) Ist es evtl. Möglich, das Update Script so anzupassen, das die EPG Daten eines DVBs Senders auch für einen IPTV Sender (z.B. Pro7 DVBs auch für Pro7 IPTV von Telekom Entertain) genutzt werden? Hintergrund ist das Problem das es bei den IPTV Sendern oft nur sehr wenige EPG Daten gibt und ich dieses gerne erweitern würde, gerade mit blick auf die AutoTimer Funktion des RS. Falls ihr da Ideen und Tipps habt, wäre ich euch Dankbar THX mcgyver Das Script selbst kann das nicht, es sind prinzipiell aber alle Komponenten da (Abfrage des EPG für einen bestimmten Kanal, Schreiben des EPGs für einen bestimmten Kanal - eigentlich müsste man nur eine Tabelle haben, von welcher EPGID auf welche andere EPGID das EPG kopiert werden soll und das EPG-XML entsprechend umarbeiten). Es gibt in diesem Forum meines Wissens schon andere Tools, die das können (ich denke da an EPG und EPGImporter). Quote
mcgyver Posted October 30, 2016 Posted October 30, 2016 Danke GruberMA für die Hinweise. Habe nach ein wenig testen verschiedener Tools und Quellen auch einen Ansatz gefunden, der soweit funktioniert. Der Weg ist zwar ein anderer, und passt eigentlich nicht hier her aber für die, die es interessiert ... http://www.DVBViewer.tv/forum/topic/57249-epgdatacom-DVBViewer-und-xepg/ Gruß mcgyver Quote
inchworm Posted January 9, 2021 Posted January 9, 2021 (edited) Hallo GruberMa ich habs ja selber versucht, komme aber leider nicht weiter. Ich nutze SATIP. Das Skript funktioniert super. Da es aber leider nur 1 Transponder findet wird auch nur 1 Kanal gescannt. Kann man das Skript irgendwie ohne großen aufwand anpassen, so dass einfach alle Kanäle nacheinander angewählt werden? Bei mir ist es leider so, dass ich für EPG Empfang jeden Sender eine gewisse Zeit lang aufrufen muss. Vielen Dank im Voraus. ########################################################### hat sich erledigt....hab eine Lösung gefunden.... habe folgende Zeile angepasst sTranspID=cstr(vChannels(n,4)) & ";" & cstr(vChannels(n,15)) & ";" & cstr(vChannels(n,5)) & ";" & cstr(vChannels(n,14)) & ";" & n hinten einfach noch das Folgende ergänzt (n ist die Sendernummer). Damit ist jede STranspID anders & ";" & n Edited January 9, 2021 by inchworm Quote
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.