Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

SCRIPT: RenameSqueezeboxDevices


Moskus

Anbefalte innlegg

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


 

 

  • Like 2
Lenke til kommentar
Del på andre sider

  • 1 år senere...

Oppdatert og bedre versjon av dette scriptet. Den gjør bl.a. dette:

image.png

 

... om til dette:

image.png

 

 

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

 

Lenke til kommentar
Del på andre sider

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.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.