Moskus Skrevet 23. januar 2018 Del Skrevet 23. januar 2018 Se neste post for oppdatert versjon. Spoiler Ble lei av å gi nytt navn til alle devicer squeezebox-pluginen oppretter, så jeg lagde et kjapt script for det. Parameter er IDen til root devicen for en spiller. Scriptet henter navnet på root'en, og erstatter "Player NN" med dette for root og alle child devicer. Dermed blir f.eks. "Player 7 Name" hetende "Stue Name", etc... Sub Main(parm As Object) 'Moskus 2018 Dim rootID As Integer = parm.ToString Dim root As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(rootID) Dim originaBase = root.Name(hs).Replace(" Name", "") Dim newBase As String = hs.DeviceString(rootID).Substring(hs.DeviceString(rootID).LastIndexOf(">") + 1).Replace(" ", "").Trim() hs.WriteLog("Rename", "Original base: '" & originaBase & "'") hs.WriteLog("Rename", "New base: '" & newBase & "'") 'Renaming devices root.Name(hs) = root.Name(hs).Replace(originaBase, newBase) Dim children() As Integer = root.AssociatedDevices(hs) For Each c As Integer In children Dim child As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(c) If child.Name(hs).Contains(originaBase) Then child.Name(hs) = child.Name(hs).Replace(originaBase, newBase) Next End Sub 2 Siter Lenke til kommentar Del på andre sider Flere delingsvalg…
Moskus Skrevet 3. juli 2019 Forfatter Del Skrevet 3. juli 2019 Oppdatert og bedre versjon av dette scriptet. Den gjør bl.a. dette: ... om til dette: ... og scriptet takler nå at noen er ferdig navngitt og andre ikke er, og kan brukes selv hvis du bytter navn på Squeezebox'en. Input er IDen til Name-devicen. RenameSqueezeboxDevices.vb: Sub Main(Byval input As Object) Dim rootRef As Integer = input.ToString Dim rootDevice As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(rootRef) Dim name As String = StripTags(hs.DeviceString(rootRef)).Replace(" ", " ").Trim hs.WriteLog("RenameDevices", "Starting with player name: " & name) rootDevice.Name(hs) = name + ", " + GetPostFix(rootDevice.Name(hs)) Dim i As Integer For Each i In rootDevice.AssociatedDevices(hs) Dim device As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(i) device.Name(hs) = name + ", " + GetPostFix(device.Name(hs)) Next hs.SaveEventsDevices() hs.WriteLog("RenameDevices", "Done renaming " & name) End Sub Function GetPostFix(ByVal input As String) As String Dim ret As String = "" If input.StartsWith("Player") Then Dim substring As String = input.Substring(8) Dim startIndex As Integer = substring.IndexOf(" ", 0) ret = substring.Substring(startIndex).Trim ElseIf input.Contains(",") Then Dim startIndex As Integer = input.IndexOf(",") ret = input.Substring(startIndex + 1).Trim End If Return ret End Function Function StripTags(ByVal html As String) As String ' Remove HTML tags. Return System.Text.RegularExpressions.Regex.Replace(html, "<.*?>", "") End Function Siter Lenke til kommentar Del på andre sider Flere delingsvalg…
Anbefalte innlegg
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.