Jump to content

Warum laufen meine Scripte nicht mehr mit der v4?


dgdg

Recommended Posts

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 by dgdg
Link to comment
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

Link to comment

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.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...