Example #1
0
    def Skip(self, offset):
        if self.HasTransportService():
            service = self.rootDevice.Device().Service(
                "urn:av-openhome-org:serviceId:Transport")

            command = None
            if offset > 0:
                command = "SkipNext"
            else:
                command = "SkipPrevious"

            for x in range(0, abs(offset)):
                soapRequest(service.ControlUrl(), service.Type(), command, "")
        else:
            source = self.Source()
            if source["type"] == "Playlist":
                service = self.rootDevice.Device().Service(
                    "urn:av-openhome-org:serviceId:Playlist")

                command = None
                if offset > 0:
                    command = "Next"
                else:
                    command = "Previous"

                for x in range(0, abs(offset)):
                    soapRequest(service.ControlUrl(), service.Type(), command,
                                "")
Example #2
0
 def SetMute(self, muteRequested):
     service = self.rootDevice.Device().Service(
         "urn:av-openhome-org:serviceId:Volume")
     valueString = None
     if muteRequested:
         valueString = "<Value>1</Value>"
     else:
         valueString = "<Value>0</Value>"
     soapRequest(service.ControlUrl(), service.Type(), "SetMute",
                 valueString)
Example #3
0
    def SetStandby(self, standbyRequested):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Product")

        valueString = None
        if standbyRequested:
            valueString = "<Value>1</Value>"
        else:
            valueString = "<Value>0</Value>"
        soapRequest(service.ControlUrl(), service.Type(), "SetStandby",
                    valueString)
Example #4
0
    def TrackInfo(self):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Info")
        trackInfoString = soapRequest(service.ControlUrl(), service.Type(),
                                      "Track", "")

        trackInfoParser = TrackInfoParser(trackInfoString)

        return trackInfoParser.TrackInfo()
Example #5
0
    def Room(self):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Product")
        product = soapRequest(service.ControlUrl(), service.Type(), "Product",
                              "")

        productXml = etree.fromstring(product)
        return productXml[0].find("{%s}ProductResponse/Room" %
                                  service.Type()).text.encode('utf-8')
Example #6
0
    def IsInStandby(self):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Product")
        standbyState = soapRequest(service.ControlUrl(), service.Type(),
                                   "Standby", "")

        standbyStateXml = etree.fromstring(standbyState)
        return standbyStateXml[0].find("{%s}StandbyResponse/Value" %
                                       service.Type()).text == "1"
Example #7
0
    def PlaylistTransportState(self):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Playlist")
        transportState = soapRequest(service.ControlUrl(), service.Type(),
                                     "TransportState", "")

        transportStateXml = etree.fromstring(transportState)
        return transportStateXml[0].find("{%s}TransportStateResponse/Value" %
                                         service.Type()).text
Example #8
0
    def PlayMedia(self, track_details):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Radio")

        didl_lite = '<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/">' \
                    '<item id="" parentID="" restricted="True">' \
                    '<dc:title>' + track_details['title'] + '</dc:title>' \
                    '<res protocolInfo="*:*:*:*">' + track_details['uri'] + '</res>' \
                    '<upnp:albumArtURI>' + track_details['albumArtwork'] + '</upnp:albumArtURI>' \
                    '<upnp:class>object.item.audioItem</upnp:class>' \
                    '</item>' \
                    '</DIDL-Lite>'

        channelValue = ("<Uri>%s</Uri><Metadata>%s</Metadata>" %
                        (track_details["uri"], didl_lite))
        soapRequest(service.ControlUrl(), service.Type(), "SetChannel",
                    channelValue)

        self.PlayRadio()
Example #9
0
    def GetConfiguration(self, key):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Config")
        keyString = ("<Key>%s</Key>" % key)
        configurationValue = soapRequest(service.ControlUrl(), service.Type(),
                                         "GetValue", keyString)

        configurationValueXml = etree.fromstring(configurationValue)
        return configurationValueXml[0].find("{%s}GetValueResponse/Value" %
                                             service.Type()).text
Example #10
0
    def GetConfigurationKeys(self):
        import json
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Config")
        keys = soapRequest(service.ControlUrl(), service.Type(), "GetKeys", "")

        keysXml = etree.fromstring(keys)
        keysArray = keysXml[0].find("{%s}GetKeysResponse/KeyList" %
                                    service.Type()).text

        return json.loads(keysArray)
Example #11
0
    def IsMuted(self):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Volume")

        if service is None:
            return None

        mute = soapRequest(service.ControlUrl(), service.Type(), "Mute", "")

        muteXml = etree.fromstring(mute)
        return muteXml[0].find("{%s}MuteResponse/Value" %
                               service.Type()).text == "true"
Example #12
0
    def Source(self):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Product")
        source = soapRequest(service.ControlUrl(), service.Type(),
                             "SourceIndex", "")

        sourceXml = etree.fromstring(source)
        sourceIndex = sourceXml[0].find("{%s}SourceIndexResponse/Value" %
                                        service.Type()).text

        sourceInfo = soapRequest(service.ControlUrl(), service.Type(),
                                 "Source",
                                 ("<Index>%s</Index>" % int(sourceIndex)))
        sourceInfoXml = etree.fromstring(sourceInfo)

        sourceName = sourceInfoXml[0].find("{%s}SourceResponse/Name" %
                                           service.Type()).text
        sourceType = sourceInfoXml[0].find("{%s}SourceResponse/Type" %
                                           service.Type()).text

        return {"type": sourceType, "name": sourceName}
Example #13
0
    def VolumeLevel(self):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Volume")

        if service is None:
            return None

        volume = soapRequest(service.ControlUrl(), service.Type(), "Volume",
                             "")

        volumeXml = etree.fromstring(volume)
        return int(volumeXml[0].find("{%s}VolumeResponse/Value" %
                                     service.Type()).text)
Example #14
0
    def TransportState(self):
        if self.HasTransportService():
            service = self.rootDevice.Device().Service(
                "urn:av-openhome-org:serviceId:Transport")
            transportState = soapRequest(service.ControlUrl(), service.Type(),
                                         "TransportState", "")

            transportStateXml = etree.fromstring(transportState)
            return transportStateXml[0].find(
                "{%s}TransportStateResponse/State" % service.Type()).text
        else:
            source = self.Source()
            if source["type"] == "Radio":
                return self.RadioTransportState()
            if source["type"] == "Playlist":
                return self.PlaylistTransportState()
            return ""
Example #15
0
    def Sources(self):
        service = self.rootDevice.Device().Service(
            "urn:av-openhome-org:serviceId:Product")
        sources = soapRequest(service.ControlUrl(), service.Type(),
                              "SourceXml", "")

        sourcesXml = etree.fromstring(sources)
        sourcesList = sourcesXml[0].find("{%s}SourceXmlResponse/Value" %
                                         service.Type()).text

        sourcesListXml = etree.fromstring(sourcesList)

        sources = []
        index = 0
        for sourceXml in sourcesListXml:
            visible = sourceXml.find("Visible").text == "true"
            if visible:
                sources.append({
                    "index": index,
                    "name": sourceXml.find("Name").text,
                    "type": sourceXml.find("Type").text
                })
            index = index + 1
        return sources
Example #16
0
 def PlayRadio(self):
     service = self.rootDevice.Device().Service(
         "urn:av-openhome-org:serviceId:Radio")
     soapRequest(service.ControlUrl(), service.Type(), "Play", "")
Example #17
0
 def PauseTransport(self):
     service = self.rootDevice.Device().Service(
         "urn:av-openhome-org:serviceId:Transport")
     soapRequest(service.ControlUrl(), service.Type(), "Pause", "")
Example #18
0
 def StopPlaylist(self):
     service = self.rootDevice.Device().Service(
         "urn:av-openhome-org:serviceId:Playlist")
     soapRequest(service.ControlUrl(), service.Type(), "Stop", "")
Example #19
0
 def GetLog(self):
     service = self.rootDevice.Device().Service(
         "urn:av-openhome-org:serviceId:Debug")
     return soapRequest(service.ControlUrl(), service.Type(), "GetLog",
                        "").decode('utf-8').split("\n")
Example #20
0
 def SetConfiguration(self, key, value):
     service = self.rootDevice.Device().Service(
         "urn:av-openhome-org:serviceId:Config")
     configValue = ("<Key>%s</Key><Value>%s</Value>" % (key, value))
     soapRequest(service.ControlUrl(), service.Type(), "SetValue",
                 configValue)
Example #21
0
 def SetSource(self, index):
     service = self.rootDevice.Device().Service(
         "urn:av-openhome-org:serviceId:Product")
     valueString = ("<Value>%s</Value>" % int(index))
     soapRequest(service.ControlUrl(), service.Type(), "SetSourceIndex",
                 valueString)
Example #22
0
 def DecreaseVolume(self):
     service = self.rootDevice.Device().Service(
         "urn:av-openhome-org:serviceId:Volume")
     soapRequest(service.ControlUrl(), service.Type(), "VolumeDec", "")
Example #23
0
 def SetVolumeLevel(self, volumeLevel):
     service = self.rootDevice.Device().Service(
         "urn:av-openhome-org:serviceId:Volume")
     valueString = ("<Value>%s</Value>" % int(volumeLevel))
     soapRequest(service.ControlUrl(), service.Type(), "SetVolume",
                 valueString)