x112 Posted November 8, 2020 Share Posted November 8, 2020 Ich versuche mich gerade bei meinem ersten Script mit der API und frage mich was der Unterschied zwischen den diversen Timer ID's ist. Welche nimmt man beim Timer löschen? Beispiel aus Timerlist API: <Timer Type="1" ID="{258A264B-AEB0-44F2-B789-B8CF4FB88B19}" Enabled="-1" ShutDown="3" Charset="255" Date="09.11.2020" Start="18:20:00" Dur="55" End="19:15:00" PreEPG="15" PostEPG="15" IntID="8781" Priority="50" Action="0" EPGEventID="1365873760"> <Descr>SpongeBob Schwammkopf - (Staffel 9, Folge 25) Hausdurchsuchung / Salsa Sch</Descr> <Options AdjustPAT="-1"/> <Format>2</Format> <Folder>Auto</Folder> <NameScheme>%year-%date_%time_%name</NameScheme> <Series>SpongeBob Schwammkopf</Series> <Source>Search:SpongeBob Schwammkopf</Source> <Channel ID="3431744810709462090|nick/MTV+ HD" EPGID="720900360762928202"/> <Executeable>-1</Executeable> <Recording>0</Recording> <ID>8781</ID> <GUID>{258A264B-AEB0-44F2-B789-B8CF4FB88B19}</GUID> </Timer> Aktuell verwendet mein Script zum Timer refreshen die numerische ID und das scheint zu funktionieren. # alle aktiven Timer für $target löschen und neu erzeugen $target="SpongeBob" # holt alle Timer in XML Struktur mit Windows Codepage [XML]$timers = (New-Object System.Net.WebClient).DownloadString("http://videoserver-2:8089/api/timerlist.html?utf8=2&EnabledOnly=1") foreach ($timer in $timers.Timers.Timer) { if ($timer.Descr.Contains($target) -and $timer.Recording -eq 0) { $id=$timer.ID[1] $ret=Invoke-WebRequest "http://videoserver-2:8089/api/timerdelete.html?id=$id" } } # Timer neu erzeugen $ret=Invoke-WebRequest "http://videoserver-2:8089/api/tasks.html?task=AutoTimer" Quote Link to comment
Griga Posted November 8, 2020 Share Posted November 8, 2020 1 hour ago, x112 said: ID="{258A264B-AEB0-44F2-B789-B8CF4FB88B19}" Wozu diese GUID gut sein soll, hat sich mir bisher nicht erschlossen. Der DMS verwendet sie intern überhaupt nicht. Sie ist nur noch aus (vermuteten) Kompatibilitätsgründen mit dabei. Beim Hinzufügen eines neuen Timers wird dieser 128-Bit-Wert durch einen Zufallsgenerator erzeugt und ist im Universum mit hoher Wahrscheinlichkeit einmalig. 1 hour ago, x112 said: IntID="8781" Diese ist verwaltungstechnisch im DMS maßgeblich und über einen sehr langen Zeitraum eindeutig (der Wert erhöht sich mit jedem neuen Timer um 1 bis 21.474.836.481, bevor er wieder bei 0 anfängt). Den aktuell als nächsten zu verwendenden Wert findet man in der svctimers.xml als NextID. Falls jemand die svctimers.xml löscht oder sie sonstwie verloren geht, fängt NextID zwar wieder bei 0 an, aber der DMS stellt auf jeden Fall durch Vergleich mit allen anderen existierenden Timern sicher, dass keine zwei Timer die gleiche IntID (Integer ID) erhalten. Quote Link to comment
x112 Posted November 8, 2020 Author Share Posted November 8, 2020 Prima. Dann dürfte mein Script ja funktionieren. 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.