Tüftler Posted September 14, 2010 Share Posted September 14, 2010 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? Quote Link to comment
nuts Posted September 14, 2010 Share Posted September 14, 2010 Du suchst wahrscheinlich: ITimeritem.Instant Quote Link to comment
Tüftler Posted September 14, 2010 Author Share Posted September 14, 2010 (edited) 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 September 14, 2010 by Tüftler Quote Link to comment
nuts Posted September 14, 2010 Share Posted September 14, 2010 (edited) 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 September 14, 2010 by nuts Quote Link to comment
Tüftler Posted September 16, 2010 Author Share Posted September 16, 2010 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. Quote Link to comment
mague Posted September 17, 2010 Share Posted September 17, 2010 (edited) 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. 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 September 17, 2010 by mague Quote Link to comment
Tüftler Posted September 17, 2010 Author Share Posted September 17, 2010 Kann dir nicht ganz folgen wozu ich was machen soll. Erläutere mal deine Idee? Quote Link to comment
mague Posted September 17, 2010 Share Posted September 17, 2010 (edited) 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 September 17, 2010 by mague Quote Link to comment
Tüftler Posted September 17, 2010 Author Share Posted September 17, 2010 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)? 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.