Jump to content

Instant Recording ermitteln


Tüftler

Recommended Posts

Habe heute mal versucht eine Instant Recording Aufnahme per vbs zu ermitteln was mir aber nicht gelungen ist..

Das ComInterface hat mich nicht weiter gebracht da es wohl keine direkten Lesevariablen dafür gibt, oder?

Habe nur dies gefunden:

function InstantRecord: WordBool; Starts an instant recording on the current channel (same as pressing the record button).

 

Returns

True if successful.

Mein Versuch dies so zu bewerkstelligen schlägt dabei fehl, da er ja offensichtlich nur true zurückgibt wenn eine Instantaufnahme angelegt wird.

If timermanager.InstantRecord=true Then

und über den Datamanager liefert er mir ja mit #Recording.Status nur inactive oder halt nichts zurück.

 

Jemand eine Idee wo mein Fehler liegt oder wie es gehen könnte?

Link to comment

Nicht wirklich, dies geht zwar mit:

If timermanager.item(0).instant Then

aber dann müsste ich wissen welche item Nummer der aktuellen Instant Aufnahme zugeordnet wurde.

Ich möchte aber eigentlich nur wissen ob irgendeine Instantaufnahme aktiv ist.

Edited by Tüftler
Link to comment

Hm ob das direkt geht weiss ich nicht.

Du kannst dir aber die Itemcollection ausgeben lassen und durchloopen.

 

Pseudocode:

$count=Itimercollection.Count  
for $i=1 to $count 
if ITimeritem.Instant = true then ....
next 

Edited by nuts
Link to comment

Hallo nuts,

erstmal danke für deinen Lösungsansatz mit der Loop Funktion.

Nach etwas geteste habe ich es jetzt am Laufen.

Ein Loop in der Command.vbs führt sofort zu einem Zeitüberschreitungsfehler. Also war ich gezwungen das auszulagern, was sich im Nachhinein sowieso als nötig erwiesen hat. Ausgelagert wurde in die startrec.vbs sowie in die stoprec.vbs.

 

Jetzt erstmal eine Erklärung was ich machen will:

Über eine Taste der Fernbedienung kann ich AudioA/B oder VideoA/B umschalten. Bisher habe ich die Funktion geblockt wenn generell eine Aufnahme lief.

Der Grund war zu verhindern das durch eine AudioA/B- bzw. VideoA/B-Umschaltung die Aufnahme in die Brüche geht, falls ein fehlerhafter oder nicht funktionierender Decoder im DirectX-A/B-Profil eingestellt sein sollte.

Da dies eigentlich ja nur für eine Instant-Aufnahme von Bedeutung ist wollte ich also ermitteln ob es sich um solch eine handelt.

 

hier also mal der Code:

startrec.vbs

option explicit
dim g, i, Timernumber, Text
'-----------------------------------------------------------------
sub main(ID,ChannelID,Filename,aDate,StartTime,EndTime,Days,Description,Instant,isPlugin,TimerAction,ShutDown)
'********** new ***********
g = 0 
do until (g > timermanager.Count)
 If timermanager.item(g).Instant then
  Datamanager.Value("#Instant Recording") = 1
 End if
  g = g + 1
loop
'******** new end *********
.

stoprec.vbs

option explicit
dim g, i, Timernumber, Text
'-----------------------------------------------------------------
sub main(ID,ChannelID,Filename,aDate,StartTime,EndTime,Days,Description,Instant,isPlugin,TimerAction,ShutDown)
'********** new ***********
g = 0 
If timermanager.count <> 0 Then
 do until (g > timermanager.Count)
  If timermanager.item(g).Instant = false Then
Datamanager.Value("#Instant Recording") = ""
  End if
g = g + 1
 loop
Else
 Datamanager.Value("#Instant Recording") = ""
End If
'******** new end *********
.

command.vbs

'Kapitel Vor/ AudioA/B
Case 30506
 If osd.isVisible or isTimeshift or isMediaplayback Then
  SendCommand(113)
'********************
 ElseIf Timermanager.Recording Then
'****** new *********
i = Datamanager.Value("#Instant Recording")
	If i <> "" Then
 	osd.showInfoinTVpic "AudioA/B-Wechsel geblockt, Aufnahme ist Aktiv!" & SendCommand(113),3000
'****** new end ******
	Else
 	SendCommand(133)
	End If
 Else
  SendCommand(133)
 End If
.

 

Der Umweg über die start- bzw. stoprec.vbs hat den Vorteil das so auch Änderungen über die Kontext-Aufnahmeprogrammierung erfasst werden.

Jetzt muss das nur noch auf Dauerunfehlbarkeit getestet werden.:bye:

Link to comment

 

 

hier also mal der Code:

startrec.vbs

option explicit
dim g, i, Timernumber, Text
'-----------------------------------------------------------------
sub main(ID,ChannelID,Filename,aDate,StartTime,EndTime,Days,Description,Instant,isPlugin,TimerAction,ShutDown)
'********** new ***********
g = 0 
do until (g > timermanager.Count)
 If timermanager.item(g).Instant then
  Datamanager.Value("#Instant Recording") = 1
 End if
  g = g + 1
loop
'******** new end *********
.

 

 

Der Umweg über die start- bzw. stoprec.vbs hat den Vorteil das so auch Änderungen über die Kontext-Aufnahmeprogrammierung erfasst werden.

Jetzt muss das nur noch auf Dauerunfehlbarkeit getestet werden.:bye:

 

Hi,

 

mach etwas in der Art von...

 If timermanager.item(g).Instant then
  Datamanager.Value("#Instant.Recording") = "tueftlerblock.png"
 End if

 

Dann sollte man es im MiniEPG auch anzeigen koennen.

Edited by mague
Link to comment

Kann dir nicht ganz folgen wozu ich was machen soll.

Erläutere mal deine Idee?

 

Hi,

 

du nutzt DataManager.Value zum Setzen eines flag. Nichts spricht dagegen das flag gleichzeitig als Wert zu nutzen. Es ist ja egal, du pruefst ja eh nur auf <>"". Es ist also egal ob da 1 oder sonstwas steht.

 

Wenn du aber ins flag einen Wert setzt, dann sieht der Spy und auch der DVBViewer das. Du kannst also z.B. den Namen eines Bildchen eines Stopzeichens ins flag schreiben. Deine scripte funktionieren weiter wie gewohnt.

 

Aber du kannst nun z.B. im XML des miniEPG ein Bildchen einfuegen und als Dateiname gibts du das flag an, also #instant.recording. Wenn dein flag "" ist, wird das Bild nicht angezeigt, wenn es gesetzt ist, wird es angezeigt. Das verhindert nichts, aber man kann im miniEPG sehen ob eine Sofortaufnahme laeuft. Siehe z.B. die Bildchen fuer encrypted usw. im Spy. Einfach nur visuelles feedback...

 

Sollte das Bild im Images Ordner des Skin nicht gefunden werden, musst du halt noch kurz den Pfad mit der skinpath property (siehe COM SDK) auslesen.

Edited by mague
Link to comment

Ok, soweit habe ich es erstmal kapiert. Man kann ja so ziemlich alles in das MiniEPG reinschreiben was man will, aber ob es den geneigten User interessiert das es sich um eine Instantaufnahme und nicht um eine zeitdefinierte Aufnahme handelt wage ich zu bezweifeln.

Das Recordingsymbol wird doch sowieso angezeigt, oder irre ich mich da (kann gerade mangels Live-TV nicht testen)?

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...