dgdg Posted December 25, 2008 Share Posted December 25, 2008 (edited) Da es in der "Scripting Lounge / COM" bisher keine brauchbare Antwort gab, versuche ich es noch mal. Seit dem Update auf die 4.0 laufen weder mein "epgupd.vbs" noch mein "startrec.vbs" und "stoprec.vbs". Alle drei Scripte waren seit längem mit der Version 3 im Eiinsatz. Was hat sich bei der 4.0 grundsätzlich hinsichtlich der VBS-Scripts geändert? Link zu meinem epgupd.vbs siehe hier. Edited December 25, 2008 by dgdg Quote Link to comment
Devastation Posted December 25, 2008 Share Posted December 25, 2008 Da es in der "Scripting Lounge / COM" bisher keine brauchbare Antwort gab, versuche ich es noch mal. Seit dem Update auf die 4.0 laufen weder mein "epgupd.vbs" noch mein "startrec.vbs" und "stoprec.vbs". Alle drei Scripte waren seit längem mit der Version 3 im Eiinsatz. Was hat sich bei der 4.0 grundsätzlich hinsichtlich der VBS-Scripts geändert? Link zu meinem epgupd.vbs siehe hier. Startrec stoprec kann ich nichts zu sagen. Aber dein epgupd ist anscheinend etwas älter als meins. Unten mal der Code. Ich habe noch eine command.vbs am laufen und die geht auch. Evtl. hat sich bei Installieren eine Einstellung verändert? Irgendwo in den Optionen kann man die Verwendung von Scripten aktivieren. Könnte ja was verstellt sein. 'EPG-Updater-Skript V1.2 'V1.1 '- Fix: Letzter Kanal wurde nicht eingestellt, wenn der DVBViewer nicht lief. '- New: Der Kanal Scan wird abgebrochen, wenn eine Aufnahme in nächster Zeit (60s) ansteht. 'V1.2 '- Fix: Die Funktion 'GetDVBVObject' gibt jetzt beim Fehler Nothing zurück '- Add: Kanal Scan wird nicht gestartet, wenn Aufnahme in nächster Zeit (60s) ansteht. '- New: ShutDownMode '- New: LogFile Option Explicit '################################### Adjust this part to your needs #################################### 'Kanäle dieser Category ausschliessen Const sExcludeCat="" 'Zeit, die für einen DVBViewer Start benötigt wird in Sekunden Const TimeToStartDVBV=30 'Zeit, die ein Kanal getuned wird in Sekunden Const TimeToGetData=20 'Mindestzeit bis zur nächsten Aufnahme in Sekunden (min. TimeToGetData+10 Sekunden) Const MinTimeToNextRecord=60 'Wenn nicht gewartet werden soll bis der Scheduler den DVBViewer startet Const StartDVBV=False 'Wie soll der DVBViewer beendet werden (Hibernate=12323, Standby=12324, Close DVBViewer=12326 ) Const ShutDownMode=12326 'LogFile, Deaktiviert="" Const LogFile="epgupd.log" '############################################################################ ############ Dim DVBViewer 'DVBViewer Object Dim vChannels 'DVBViewer Channel Array Dim sTranspArray() 'Array von schon gescannten Transpondern Dim iTranspCount 'Anzahl Transponder Dim bIsRunning 'DVBViewer schon am laufen gewesen Dim bIsRecording 'DVBViewer will in nächster Zeit was aufnehmen Dim lActChannelNo 'Aktueller eingestellter Kanal Dim rc 'Retry Count '############################################################################ ############ LogMsg("***** Start *****") iTranspCount=0: bIsRunning=False: bIsRecording=False ' DVBViewer starten, falls er nicht schon läuft If GetDVBVObject(DVBViewer) Then LogMsg("DVBViewer is running") bIsRunning=True 'Wenn gerade Aufnahme oder Timeshift, dann gleich wieder beenden If DVBViewer.TimerManager.Recording OR DVBViewer.IsTimeshift Then bIsRecording=True End If Else If StartDVBV Then LogMsg("DVBViewer is now starting...") Set DVBViewer=WScript.CreateObject("DVBViewerServer.DVBViewer") 'Warten bis der DVBViewer gestartet ist WScript.Sleep(TimeToStartDVBV*1000) Else rc=3 While rc>0 LogMsg("Waiting for DVBViewer...") 'Warten bis der Scheduler den DVBViewer gestartet hat WScript.Sleep(TimeToStartDVBV*1000) If GetDVBVObject(DVBViewer) Then rc=0 Else rc=rc-1 End if WEnd End If End If 'Wenn Fehler, schon eine Aufnahme läuft oder eine Aufnahme ansteht, dann beenden If DVBViewer is Nothing OR bIsRecording OR IsRecordingTime() Then LogMsg("Quit -> No DVBViewer object or DVBViewer is recording") Set DVBViewer=Nothing WScript.Quit End If 'Aktuell eingestellten Kanal merken lActChannelNo=DVBViewer.CurrentChannelNr DVBViewer.osd.setmute 1 Call ScanChannels DVBViewer.osd.setmute 0 LogMsg("Tuning last channel...") DVBViewer.osd.showinfointvpic "Letzter Sender wird jetzt wieder eingestellt...", 5000 DVBViewer.CurrentChannelNr=lActChannelNo WScript.Sleep(5000) If bIsRunning=False AND bIsRecording=False Then LogMsg("DVBViewer shutdown") 'DVBViewer beenden bzw. Rechner runterfahren DVBViewer.SendCommand(ShutDownMode) Else LogMsg("Rebuild graph") 'RebuildGraph DVBViewer.SendCommand(53) End If WScript.Sleep(1000) LogMsg("Quit") Set DVBViewer=Nothing WScript.Quit '############################################################################ ############ Sub LogMsg(msg) dim fso, fsofile If Len(LogFile)>0 Then set fso = CreateObject("Scripting.FileSystemObject") set fsofile = fso.OpenTextFile(LogFile, 8, True) fsofile.writeline FormatDateTime(now, 0)+": "+msg fsofile.close set fsofile = nothing Set fso = nothing End If End Sub Function IsRecordingTime() dim sec sec=DateDiff("s", Now, DVBViewer.TimerManager.NextRecordingTime) 'Prüfen ob eine Aufnahme ansteht if sec>=0 AND sec<MinTimeToNextRecord Then IsRecordingTime=True Else IsRecordingTime=False End If End Function 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 End Function Sub ScanChannels() Dim n, iChannelCount, sTranspID LogMsg("Scanning channels...") iChannelCount=DVBViewer.ChannelManager.GetChannelList(vChannels) 'Alle Kanäle tunen die in der ChannelList stehen aber noch nicht im Transponder Array For n=0 to iChannelCount-1 If IsRecordingTime() Then LogMsg("Cancel -> Recording in short time") bIsRecording=True DVBViewer.osd.showinfointvpic "Abbruch, Aufnahme steht an", 2000 WScript.Sleep(2000) Exit For End If 'Channel Category(2), Encrypted(3) Bit 1, EPG is excluded from the "What's Now" tab If InStr(1, sExcludeCat, vChannels(n,2), vbTextCompare)=0 AND (vChannels(n,3) AND 2)=0 Then 'Channel TunerType(4), Frequency(5), Polarity(14) sTranspID=MakeTranspID(vChannels(n,4), vChannels(n,5), vChannels(n,14)) 'Transponder schon mal eingestellt? If FindTransponder(sTranspID)=False Then LogMsg("Tuning transponder -> "+sTranspID+" '"+vChannels(n,1)+"'") 'Transponder in der Liste der schon eingestellten Transponder eintragen Call AddTransponder(sTranspID) 'Channel Name(1) Call TuneChannel(vChannels(n,1)) End If End If Next End Sub Function MakeTranspID(iTunerType, lFrequency, iPolarity) MakeTranspID=FormatNumber(iTunerType,0,-1,0,0)+","+FormatNumber(lFrequency,0,-1,0,0)+","+FormatNumber(iPolarity,0,-1,0,0) End Function Function FindTransponder(sTranspID) Dim sTranspItem If iTranspCount>0 Then For Each sTranspItem In sTranspArray If sTranspItem=sTranspID Then FindTransponder=True Exit Function End If Next Else FindTransponder=False End If End Function Sub AddTransponder(sTranspID) ReDim Preserve sTranspArray(iTranspCount) sTranspArray(iTranspCount)=sTranspID iTranspCount=iTranspCount+1 End Sub Function TuneChannel(sChannelName) Dim i i=DVBViewer.ChannelManager.GetbyChannelname(sChannelName) If i>-1 Then DVBViewer.osd.showinfointvpic "Sender '" & sChannelName & "' wird jetzt eingestellt...", 2000 DVBViewer.CurrentChannelNr=i WScript.Sleep(TimeToGetData*1000) TuneChannel=True Else TuneChannel=False End If End Function Quote Link to comment
dgdg Posted December 25, 2008 Author Share Posted December 25, 2008 Die Einstellungen zum Skripting unter Optionen hatte ich schon kontrolliert. Ich kann da nichts Auffälliges erkennen. Dein epgupd.vbs werden ich ausprobieren, wenn hier mal gerade keine Aufnahme läuft. 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.