Code Monkey home page Code Monkey logo

dlnap's People

Contributors

cherezov avatar danito avatar nicopy avatar ttopholm avatar xenoslu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dlnap's Issues

Not working with Sony Bravia KDL-32EX525

Hi there. I can't detect my Sony Bravia KDL-32EX525. It only detects my own pc as a device as 127.0.0.1. No external IPs?

I'm using Python 3.6 and no proxy.

Thanks a lot for this app. I've been looking for it for a long time since it creates new possibilities. I use eventghost for automation and a voice command like "Cast Iron Man" would play that movie on my TV.

Root: action Failed

Not sure how to proceed but please see the following output:

jonny@jonny-Latitude-E5430-vPro:~/dlnap-master/dlnap$ ./dlnap.py --ip 192.168.5.91 --log=debug --mute
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_25_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_27_'], u'serviceType': [u'urn:dial-multiscreen-org:service:dial:1'], u'serviceId': [u'urn:dial-multiscreen-org:serviceId:dial'], u'eventSubURL': [u'/smp_28_'], u'SCPDURL': [u'/smp_26_']}]}], u'modelName': [u'UE40HU6900'], u'serialNumber': [u'20090804RCR'], u'sec:Capabilities': [{u'sec:Capability': []}], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'sec:ProductCap': [u'Resolution:1920X1080,Y2014'], u'modelNumber': [u'1.0'], u'deviceType': [u'urn:dial-multiscreen-org:device:dialreceiver:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV NS'], u'UDN': [u'uuid:07270e02-0078-1000-8cd0-fc8f9080e621'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: None
INFO:DlnapDevice:rendering_control_url: None
INFO:DlnapDevice:=> Initialization completed
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_25_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_27_'], u'serviceType': [u'urn:dial-multiscreen-org:service:dial:1'], u'serviceId': [u'urn:dial-multiscreen-org:serviceId:dial'], u'eventSubURL': [u'/smp_28_'], u'SCPDURL': [u'/smp_26_']}]}], u'modelName': [u'UE40HU6900'], u'serialNumber': [u'20090804RCR'], u'sec:Capabilities': [{u'sec:Capability': []}], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'sec:ProductCap': [u'Resolution:1920X1080,Y2014'], u'modelNumber': [u'1.0'], u'deviceType': [u'urn:dial-multiscreen-org:device:dialreceiver:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV NS'], u'UDN': [u'uuid:07270e02-0078-1000-8cd0-fc8f9080e621'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: None
INFO:DlnapDevice:rendering_control_url: None
INFO:DlnapDevice:=> Initialization completed
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_25_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_27_'], u'serviceType': [u'urn:dial-multiscreen-org:service:dial:1'], u'serviceId': [u'urn:dial-multiscreen-org:serviceId:dial'], u'eventSubURL': [u'/smp_28_'], u'SCPDURL': [u'/smp_26_']}]}], u'modelName': [u'UE40HU6900'], u'serialNumber': [u'20090804RCR'], u'sec:Capabilities': [{u'sec:Capability': []}], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'sec:ProductCap': [u'Resolution:1920X1080,Y2014'], u'modelNumber': [u'1.0'], u'deviceType': [u'urn:dial-multiscreen-org:device:dialreceiver:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV NS'], u'UDN': [u'uuid:07270e02-0078-1000-8cd0-fc8f9080e621'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: None
INFO:DlnapDevice:rendering_control_url: None
INFO:DlnapDevice:=> Initialization completed
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_25_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_27_'], u'serviceType': [u'urn:dial-multiscreen-org:service:dial:1'], u'serviceId': [u'urn:dial-multiscreen-org:serviceId:dial'], u'eventSubURL': [u'/smp_28_'], u'SCPDURL': [u'/smp_26_']}]}], u'modelName': [u'UE40HU6900'], u'serialNumber': [u'20090804RCR'], u'sec:Capabilities': [{u'sec:Capability': []}], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'sec:ProductCap': [u'Resolution:1920X1080,Y2014'], u'modelNumber': [u'1.0'], u'deviceType': [u'urn:dial-multiscreen-org:device:dialreceiver:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV NS'], u'UDN': [u'uuid:07270e02-0078-1000-8cd0-fc8f9080e621'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: None
INFO:DlnapDevice:rendering_control_url: None
INFO:DlnapDevice:=> Initialization completed
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_15_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_17_'], u'serviceType': [u'urn:schemas-upnp-org:service:RenderingControl:1'], u'serviceId': [u'urn:upnp-org:serviceId:RenderingControl'], u'eventSubURL': [u'/smp_18_'], u'SCPDURL': [u'/smp_16_']}, {u'controlURL': [u'/smp_20_'], u'serviceType': [u'urn:schemas-upnp-org:service:ConnectionManager:1'], u'serviceId': [u'urn:upnp-org:serviceId:ConnectionManager'], u'eventSubURL': [u'/smp_21_'], u'SCPDURL': [u'/smp_19_']}, {u'controlURL': [u'/smp_23_'], u'serviceType': [u'urn:schemas-upnp-org:service:AVTransport:1'], u'serviceId': [u'urn:upnp-org:serviceId:AVTransport'], u'eventSubURL': [u'/smp_24_'], u'SCPDURL': [u'/smp_22_']}]}], u'modelName': [u'UE40HU6900'], u'iconList': [{u'icon': [{u'mimetype': [u'image/jpeg'], u'width': [u'48'], u'depth': [u'24'], u'url': [u'/dmr/icon_SML.jpg'], u'height': [u'48']}, {u'mimetype': [u'image/jpeg'], u'width': [u'120'], u'depth': [u'24'], u'url': [u'/dmr/icon_LRG.jpg'], u'height': [u'120']}, {u'mimetype': [u'image/png'], u'width': [u'48'], u'depth': [u'24'], u'url': [u'/dmr/icon_SML.png'], u'height': [u'48']}, {u'mimetype': [u'image/png'], u'width': [u'120'], u'depth': [u'24'], u'url': [u'/dmr/icon_LRG.png'], u'height': [u'120']}]}], u'dlna:X_DLNADOC': [u'DMR-1.50'], u'df:X_deviceCategory': [u'Display.TV.LCD Multimedia.DMR'], u'serialNumber': [u'20110517DMR'], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'pnpx:X_compatibleId': [u'MS_DigitalMediaDeviceClass_DMR_V001'], u'sec:ProductCap': [u'Y2014,WebURIPlayable,SeekTRACK_NR,NavigateInPause'], u'modelNumber': [u'AllShare1.0'], u'deviceType': [u'urn:schemas-upnp-org:device:MediaRenderer:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV DMR'], u'UDN': [u'uuid:0c845882-00d2-1000-960f-fc8f9080e621'], u'pnpx:X_hardwareId': [u'VEN_0105&DEV_VD0001'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: /smp_23_
INFO:DlnapDevice:rendering_control_url: /smp_17_
INFO:DlnapDevice:=> Initialization completed
[TV]Samsung LED40 @ 192.168.5.91
DEBUG:DlnapDevice:POST /smp_17_ HTTP/1.1
User-Agent: ./dlnap.py/0.15
Accept: /
Content-Type: text/xml; charset="utf-8"
HOST: 192.168.5.91:7676
Content-Length: 449
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetMute"
Connection: close

     <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <s:Body>
           <u:SetMute xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
              <InstanceID>0</InstanceID><DesiredMute>1</DesiredMute><Channel>Master</Channel>
           </u:SetMute>
        </s:Body>
     </s:Envelope>

ERROR:root:Action Failed

Wrong post url?

I just tried to play some local mp3 files and everything failed. I analyzed the source and it seems that the post url is wrong. The following change fixed all of my problems:

      if action in ["SetVolume", "SetMute", "GetVolume"]:
          url = 'http://{ip}:{port}/{control}'.format(ip=self.ip, port=self.port, control=self.rendering_control_url)
          urn = URN_RenderingControl_Fmt.format(self.ssdp_version)
      else:
          url = 'http://{ip}:{port}/{control}'.format(ip=self.ip, port=self.port, control=self.control_url)
          urn = URN_AVTransport_Fmt.format(self.ssdp_version)

Results

Without the bugfix:

DEBUG:DlnapDevice:POST AVTransport/control HTTP/1.1
User-Agent: ./dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset=utf-8
HOST: 192.168.1.100:8080
Content-Length: 508
SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
Connection: close

With bugfix:

DEBUG:DlnapDevice:POST http://192.168.1.100:8080/AVTransport/control HTTP/1.1
User-Agent: ./dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 192.168.1.100:8080
Content-Length: 508
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
Connection: close

It works like a charm now.

ERROR:root:invalid action and problem finding devices

Hi,

I'm not sure if this project is still active. I tried it out to control my audio system from my computer.
the system is apparently made by rakoit.com. It came with an android touch screen connected via wifi using DLNA so I thought to give this project a go.
I'm having however some issues:

  1. for some reason, somethimes it properly find my avtransport capable devices, sometimes it doesn't give any output and then no devices found, even with --log=debug option. this seems to happen often after an error occured but I'm not sure if it is related. for some reason, deactivationg and reactivating my laptop's wifi seems to fix this issue usually but not always.
  2. playing a remote URI doesn't seem to work properly. using 'Device Spy' from 'Developer tools for UPNP Technology', I noticed that the android system is generating an event that is 'TRANSITIONING' followed by a 'PLAYING' event. with dlnap.py I only say the 'TRANSITIONING' event.
    I then changed this line:
    packet = self._create_packet('Play', {'InstanceID': instance_id, 'Speed': 1})
    to
    packet = self._create_packet('Playing', {'InstanceID': instance_id, 'Speed': 1})
    and then it generated an event 'PLAYING' after the transitioning event and music starts playing. unfortunately, I'm also getting an error:
    `DEBUG:DlnapDevice:Debug:
    POST /upnp/control/rendertransport1 HTTP/1.1
    User-Agent: D:\dev\Python\DLNA\dlnap-master\dlnap\dlnap.py/0.15
    Accept: /
    Content-Type: text/xml; charset="utf-8"
    HOST: 192.168.1.28:49152
    Content-Length: 407
    SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Playing"
    Connection: close
     <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <s:Body>
           <u:Playing xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
              <InstanceID>0</InstanceID><Speed>1</Speed>
           </u:Playing>
        </s:Body>
     </s:Envelope>

ERROR:root:invalid action`

Also, it's not the music that I instructed it to play but the next song from the android interface.
I have the impression that the URI is not encoded correctly and certainly when there are characters like 'é' in the filename.
I found some HTTP API documentation for this device where it says that you need to convert the URI to HEX before sending it (and this needs to correctly convert characters like 'é' to C3A9 rather than E3)

I also tried passing it a URI from an MP3 on the andriod device, but also this just skips the music to the next song rather than starting the URI that was given. I'm guessing it can't find the URI because it is not correct encoded.

So, my guess so far is that the encoding is not correct for the rakoit.com device and for some reason the play doesn't work, while playing seems to cause music to start but returns an error as well.

any hints on where to start looking would be appreciated.
regards,
Johan

Pioneer N30

In my network there is a Pioneer N-30 streamer. It is discovered by the program. Unfortunately when I try to play something, I get back N-30 @ 192.168.0.14, but there is no music. Somebody an idea?

add support to lg web os

add support to lg web os

[LG] webOS TV UN8000PSD @ 192.168.0.4
ERROR:root:Transition not available
ERROR:root:Illegal MIME-type

Images don't show

I was able to show mp4 by url and proxy but jpg and png the screen blips and goes back to standby. The python script never returns to the command line.

My DLNA renderer can't see my MKV files

Hi

I have a Sony TV, model KDL 32EX525. It uses exactly the same profile as a PS3. No differences. The thing is: all my movies in MKV are not being displayed. Also, my MP4 files with SRT subtitles inside the same folder with the same filename are not being used too. What can I do to solve this?

"[TV] Samsung 6 Series (65)" not work

~/Projects/python/dlnap/dlnap(master) » ./dlnap.py --device tv --play http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8 --proxy
[TV] Samsung 6 Series (65) @ 192.168.0.175
ERROR:root:Invalid Args
ERROR:root:Invalid Args
ERROR:root:Invalid Args

Tested on these urls with same result:
https://qgy18.com/jsvideo/MPEG1/fox.mpg
http://flv.bn.netease.com/tvmrepo/2012/7/C/7/E868IGRC7-mobile.mp4
http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8

I am writing a macOS app, works on Kodi, failed on samsung tv with same error: "Invalid Args". Do you know what's the reason?

http://192.168.0.175/dmr
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:pnpx="http://schemas.microsoft.com/windows/pnpx/2005/11" xmlns:df="http://schemas.microsoft.com/windows/2008/09/devicefoundation" xmlns:sec="http://www.sec.co.kr/dlna">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <device>
    <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
    <pnpx:X_compatibleId>MS_DigitalMediaDeviceClass_DMR_V001</pnpx:X_compatibleId>
    <df:X_deviceCategory>Display.TV.LCD Multimedia.DMR</df:X_deviceCategory>
    <dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMR-1.50</dlna:X_DLNADOC>
    <friendlyName>[TV] Samsung 6 Series (65)</friendlyName>
    <manufacturer>Samsung Electronics</manufacturer>
    <manufacturerURL>http://www.samsung.com/sec</manufacturerURL>
    <modelDescription>Samsung TV DMR</modelDescription>
    <modelName>UA65KU6300</modelName>
    <modelNumber>AllShare1.0</modelNumber>
    <modelURL>http://www.samsung.com/sec</modelURL>
    <serialNumber>20160113DMR</serialNumber>
    <UDN>uuid:241f5305-7e7d-4ee3-a74a-5095ac5e942a</UDN>
    <sec:deviceID/>
    <iconList>
      <icon>
        <mimetype>image/jpeg</mimetype>
        <width>48</width>
        <height>48</height>
        <depth>24</depth>
        <url>/icon_SML.jpg</url>
      </icon>
      <icon>
        <mimetype>image/jpeg</mimetype>
        <width>120</width>
        <height>120</height>
        <depth>24</depth>
        <url>/icon_LRG.jpg</url>
      </icon>
      <icon>
        <mimetype>image/png</mimetype>
        <width>48</width>
        <height>48</height>
        <depth>24</depth>
        <url>/icon_SML.png</url>
      </icon>
      <icon>
        <mimetype>image/png</mimetype>
        <width>120</width>
        <height>120</height>
        <depth>24</depth>
        <url>/icon_LRG.png</url>
      </icon>
    </iconList>
    <serviceList>
      <service>
        <serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
        <serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
        <controlURL>/upnp/control/RenderingControl1</controlURL>
        <eventSubURL>/upnp/event/RenderingControl1</eventSubURL>
        <SCPDURL>/RenderingControl_1.xml</SCPDURL>
      </service>
      <service>
        <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
        <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
        <controlURL>/upnp/control/ConnectionManager1</controlURL>
        <eventSubURL>/upnp/event/ConnectionManager1</eventSubURL>
        <SCPDURL>/ConnectionManager_1.xml</SCPDURL>
      </service>
      <service>
        <serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
        <serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
        <controlURL>/upnp/control/AVTransport1</controlURL>
        <eventSubURL>/upnp/event/AVTransport1</eventSubURL>
        <SCPDURL>/AVTransport_1.xml</SCPDURL>
      </service>
      <service>
        <serviceType>urn:schemas-rvualliance-org:service:StreamSplicing:1</serviceType>
        <serviceId>urn:upnp-org:serviceId:StreamSplicing</serviceId>
        <controlURL>/upnp/control/StreamSplicing1</controlURL>
        <eventSubURL>/upnp/event/StreamSplicing1</eventSubURL>
        <SCPDURL>/StreamSplicing_1.xml</SCPDURL>
      </service>
    </serviceList>
    <sec:ProductCap>Tizen,Y2016,WebURIPlayable,NavigateInPause,ScreenMirroringP2PMAC=fa:77:b8:9d:b4:e8,UHD_SCREEN</sec:ProductCap>
    <pnpx:X_hardwareId>VEN_0105&amp;DEV_VD0001</pnpx:X_hardwareId>
  </device>
</root>
http://192.168.0.175/AVTransport_1.xml
<?xml version="1.0" encoding="utf-8"?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <actionList>
    <action>
      <name>Play</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>Speed</name>
          <direction>in</direction>
          <relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>Stop</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>Next</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>Previous</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>SetPlayMode</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>NewPlayMode</name>
          <direction>in</direction>
          <relatedStateVariable>CurrentPlayMode</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>GetMediaInfo</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>NrTracks</name>
          <direction>out</direction>
          <relatedStateVariable>NumberOfTracks</relatedStateVariable>
          <defaultValue>0</defaultValue>
        </argument>
        <argument>
          <name>MediaDuration</name>
          <direction>out</direction>
          <relatedStateVariable>CurrentMediaDuration</relatedStateVariable>
        </argument>
        <argument>
          <name>CurrentURI</name>
          <direction>out</direction>
          <relatedStateVariable>AVTransportURI</relatedStateVariable>
        </argument>
        <argument>
          <name>CurrentURIMetaData</name>
          <direction>out</direction>
          <relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
        </argument>
        <argument>
          <name>NextURI</name>
          <direction>out</direction>
          <relatedStateVariable>NextAVTransportURI</relatedStateVariable>
        </argument>
        <argument>
          <name>NextURIMetaData</name>
          <direction>out</direction>
          <relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
        </argument>
        <argument>
          <name>PlayMedium</name>
          <direction>out</direction>
          <relatedStateVariable>PlaybackStorageMedium</relatedStateVariable>
        </argument>
        <argument>
          <name>RecordMedium</name>
          <direction>out</direction>
          <relatedStateVariable>RecordStorageMedium</relatedStateVariable>
        </argument>
        <argument>
          <name>WriteStatus</name>
          <direction>out</direction>
          <relatedStateVariable>RecordMediumWriteStatus</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>GetDeviceCapabilities</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>PlayMedia</name>
          <direction>out</direction>
          <relatedStateVariable>PossiblePlaybackStorageMedia</relatedStateVariable>
        </argument>
        <argument>
          <name>RecMedia</name>
          <direction>out</direction>
          <relatedStateVariable>PossibleRecordStorageMedia</relatedStateVariable>
        </argument>
        <argument>
          <name>RecQualityModes</name>
          <direction>out</direction>
          <relatedStateVariable>PossibleRecordQualityModes</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>SetAVTransportURI</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>CurrentURI</name>
          <direction>in</direction>
          <relatedStateVariable>AVTransportURI</relatedStateVariable>
        </argument>
        <argument>
          <name>CurrentURIMetaData</name>
          <direction>in</direction>
          <relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>SetNextAVTransportURI</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>NextURI</name>
          <direction>in</direction>
          <relatedStateVariable>NextAVTransportURI</relatedStateVariable>
        </argument>
        <argument>
          <name>NextURIMetaData</name>
          <direction>in</direction>
          <relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
        </argument>
      </argumentList>
    </action>

    <action>
      <name>X_PrefetchURI</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>PrefetchURI</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_PrefetchURI</relatedStateVariable>
        </argument>
        <argument>
          <name>PrefetchURIMetaData</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_PrefetchURIMetaData</relatedStateVariable>
        </argument>
      </argumentList>
    </action>

    <action>
      <name>GetTransportSettings</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>PlayMode</name>
          <direction>out</direction>
          <relatedStateVariable>CurrentPlayMode</relatedStateVariable>
        </argument>
        <argument>
          <name>RecQualityMode</name>
          <direction>out</direction>
          <relatedStateVariable>CurrentRecordQualityMode</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>GetTransportInfo</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>CurrentTransportState</name>
          <direction>out</direction>
          <relatedStateVariable>TransportState</relatedStateVariable>
        </argument>
        <argument>
          <name>CurrentTransportStatus</name>
          <direction>out</direction>
          <relatedStateVariable>TransportStatus</relatedStateVariable>
        </argument>
        <argument>
          <name>CurrentSpeed</name>
          <direction>out</direction>
          <relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>Pause</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>Seek</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>Unit</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_SeekMode</relatedStateVariable>
        </argument>
        <argument>
          <name>Target</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_SeekTarget</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>GetPositionInfo</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>Track</name>
          <direction>out</direction>
          <relatedStateVariable>CurrentTrack</relatedStateVariable>
        </argument>
        <argument>
          <name>TrackDuration</name>
          <direction>out</direction>
          <relatedStateVariable>CurrentTrackDuration</relatedStateVariable>
        </argument>
        <argument>
          <name>TrackMetaData</name>
          <direction>out</direction>
          <relatedStateVariable>CurrentTrackMetaData</relatedStateVariable>
        </argument>
        <argument>
          <name>TrackURI</name>
          <direction>out</direction>
          <relatedStateVariable>CurrentTrackURI</relatedStateVariable>
        </argument>
        <argument>
          <name>RelTime</name>
          <direction>out</direction>
          <relatedStateVariable>RelativeTimePosition</relatedStateVariable>
        </argument>
        <argument>
          <name>AbsTime</name>
          <direction>out</direction>
          <relatedStateVariable>AbsoluteTimePosition</relatedStateVariable>
        </argument>
        <argument>
          <name>RelCount</name>
          <direction>out</direction>
          <relatedStateVariable>RelativeCounterPosition</relatedStateVariable>
        </argument>
        <argument>
          <name>AbsCount</name>
          <direction>out</direction>
          <relatedStateVariable>AbsoluteCounterPosition</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    
    <action>
      <name>GetCurrentTransportActions</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>Actions</name>
          <direction>out</direction>
          <relatedStateVariable>CurrentTransportActions</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>X_DLNA_GetBytePositionInfo</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>TrackSize</name>
          <direction>out</direction>
          <relatedStateVariable>X_DLNA_CurrentTrackSize</relatedStateVariable>
        </argument>
        <argument>
          <name>RelByte</name>
          <direction>out</direction>
          <relatedStateVariable>X_DLNA_RelativeBytePosition</relatedStateVariable>
        </argument>
        <argument>
          <name>AbsByte</name>
          <direction>out</direction>
          <relatedStateVariable>X_DLNA_AbsoluteBytePosition</relatedStateVariable>
        </argument>
      </argumentList>
    </action>
    <action>
      <name>X_GetStoppedReason</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>StoppedReason</name>
          <direction>out</direction>
          <relatedStateVariable>A_ARG_TYPE_StoppedReason</relatedStateVariable>
        </argument>
        <argument>
          <name>StoppedReasonData</name>
          <direction>out</direction>
          <relatedStateVariable>A_ARG_TYPE_StoppedReasonData</relatedStateVariable>
        </argument>
      </argumentList>
    </action>

    <action>
      <name>X_PlayerAppHint</name>
      <argumentList>
        <argument>
          <name>InstanceID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
        </argument>
        <argument>
          <name>UpnpClass</name>
          <direction>in</direction>
          <relatedStateVariable>X_ARG_TYPE_UpnpClass</relatedStateVariable>
        </argument>
        <argument>
          <name>PlayerHint</name>
          <direction>in</direction>
          <relatedStateVariable>X_ARG_TYPE_PlayerHint</relatedStateVariable>
        </argument>
      </argumentList>
    </action>

  </actionList>
   
  <serviceStateTable>
    <stateVariable sendEvents="no">
      <name>TransportState</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>STOPPED</allowedValue>
        <allowedValue>PAUSED_PLAYBACK</allowedValue>
        <allowedValue>PLAYING</allowedValue>
        <allowedValue>TRANSITIONING</allowedValue>
        <allowedValue>NO_MEDIA_PRESENT</allowedValue>
      </allowedValueList>
      <defaultValue>NO_MEDIA_PRESENT</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>TransportStatus</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>OK</allowedValue>
        <allowedValue>ERROR_OCCURRED</allowedValue>
      </allowedValueList>
      <defaultValue>OK</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>TransportPlaySpeed</name>
      <dataType>string</dataType>
      <defaultValue>1</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>NumberOfTracks</name>
      <dataType>ui4</dataType>
      <allowedValueRange>
        <minimum>0</minimum>
        <maximum>4294967295</maximum>
      </allowedValueRange>
      <defaultValue>0</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>CurrentMediaDuration</name>
      <dataType>string</dataType>
      <defaultValue>00:00:00</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>AVTransportURI</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>AVTransportURIMetaData</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>PlaybackStorageMedium</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>NONE</allowedValue>
        <allowedValue>NETWORK</allowedValue>
      </allowedValueList>
      <defaultValue>NONE</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>CurrentTrack</name>
      <dataType>ui4</dataType>
      <allowedValueRange>
        <minimum>0</minimum>
        <maximum>4294967295</maximum>
        <step>1</step>
      </allowedValueRange>
      <defaultValue>0</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>CurrentTrackDuration</name>
      <dataType>string</dataType>
      <defaultValue>00:00:00</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>CurrentTrackMetaData</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>CurrentTrackURI</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>RelativeTimePosition</name>
      <dataType>string</dataType>
      <defaultValue>00:00:00</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>AbsoluteTimePosition</name>
      <dataType>string</dataType>
      <defaultValue>00:00:00</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>NextAVTransportURI</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>NextAVTransportURIMetaData</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>CurrentTransportActions</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>RecordStorageMedium</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>NOT_IMPLEMENTED</allowedValue>
      </allowedValueList>
      <defaultValue>NOT_IMPLEMENTED</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>RecordMediumWriteStatus</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>NOT_IMPLEMENTED</allowedValue>
      </allowedValueList>
      <defaultValue>NOT_IMPLEMENTED</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>RelativeCounterPosition</name>
      <dataType>i4</dataType>
      <defaultValue>2147483647</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>AbsoluteCounterPosition</name>
      <dataType>i4</dataType>
      <defaultValue>2147483647</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>PossiblePlaybackStorageMedia</name>
      <dataType>string</dataType>
      <defaultValue>NETWORK</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>PossibleRecordStorageMedia</name>
      <dataType>string</dataType>
      <defaultValue>NOT_IMPLEMENTED</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>PossibleRecordQualityModes</name>
      <dataType>string</dataType>
      <defaultValue>NOT_IMPLEMENTED</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>CurrentPlayMode</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>NORMAL</allowedValue>
      </allowedValueList>
      <defaultValue>NORMAL</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>CurrentRecordQualityMode</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>NOT_IMPLEMENTED</allowedValue>
      </allowedValueList>
      <defaultValue>NOT_IMPLEMENTED</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="yes">
      <name>LastChange</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>A_ARG_TYPE_InstanceID</name>
      <dataType>ui4</dataType>
    </stateVariable>

    <stateVariable sendEvents="no">
      <name>A_ARG_TYPE_PrefetchURI</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>A_ARG_TYPE_PrefetchURIMetaData</name>
      <dataType>string</dataType>
    </stateVariable>
 
   <stateVariable sendEvents="no">
      <name>A_ARG_TYPE_SeekMode</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>TRACK_NR</allowedValue>
        <allowedValue>REL_TIME</allowedValue>
        <allowedValue>ABS_TIME</allowedValue>
        <allowedValue>ABS_COUNT</allowedValue>
        <allowedValue>REL_COUNT</allowedValue>
        <allowedValue>X_DLNA_REL_BYTE</allowedValue>
        <allowedValue>FRAME</allowedValue>
      </allowedValueList>
      <defaultValue>REL_TIME</defaultValue>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>A_ARG_TYPE_SeekTarget</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>X_DLNA_RelativeBytePosition</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>X_DLNA_AbsoluteBytePosition</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>X_DLNA_CurrentTrackSize</name>
      <dataType>string</dataType>
    </stateVariable>

    <stateVariable sendEvents="no">
      <name>A_ARG_TYPE_StoppedReason</name>
      <dataType>string</dataType>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>A_ARG_TYPE_StoppedReasonData</name>
      <dataType>string</dataType>
    </stateVariable>

    <stateVariable sendEvents="no">
      <name>X_ARG_TYPE_UpnpClass</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>object.item.imageItem</allowedValue>
        <allowedValue>object.item.audioItem</allowedValue>
        <allowedValue>object.item.videoItem</allowedValue>
      </allowedValueList>
    </stateVariable>
    <stateVariable sendEvents="no">
      <name>X_ARG_TYPE_PlayerHint</name>
      <dataType>string</dataType>
      <allowedValueList>
        <allowedValue>load</allowedValue>
        <allowedValue>unload</allowedValue>
      </allowedValueList>
    </stateVariable>

  </serviceStateTable>
</scpd>

ERROR:root:Invalid Args

Hi
./dlnap.py
Discovered devices:
[a] [TV] Samsung Q70 Series (55) @ 192.168.88.11
[a] [TV] Samsung 3 Series (27) @ 192.168.88.64

./dlnap.py --ip 192.168.88.64 --play 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4' --proxy
[TV] Samsung 3 Series (27) @ 192.168.88.64
ERROR:root:Invalid Args

Without proxy the same:

./dlnap.py --ip 192.168.88.64 --play 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4'
[TV] Samsung 3 Series (27) @ 192.168.88.64
ERROR:root:Invalid Args

I see dialogbox on TV: "Info: Check network connection"

Searchin devices is not consistent

Hello,

When I search devices several times, than sometimes the searched devices show as 'a' and sometimes as 'x' with --all parameter. Sometimes they are randomly missing too. ex:

python2  dlnap.py --all
Discovered devices:
 [a] Kodi (LibreELEC) @ 192.168.1.20
 [a] Volumio @ 192.168.1.29
 [a] Marantz M-CR611 @ 192.168.1.26
python2 dlnap.py --all
Discovered devices:
 [a] Kodi (LibreELEC) @ 192.168.1.20
 [a] Volumio @ 192.168.1.29
 [a] Marantz M-CR611 @ 192.168.1.26
python2 dlnap.py --all
Discovered devices:
 [a] Marantz M-CR611 @ 192.168.1.26
 [a] Volumio @ 192.168.1.29
 [x] Kodi (LibreELEC) @ 192.168.1.20
python2 dlnap.py --all
Discovered devices:
 [a] Volumio @ 192.168.1.29
 [a] Marantz M-CR611 @ 192.168.1.26
[kamil@kamildesktop dlnap]$ python2 dlnap.py --all
Discovered devices:
 [a] Marantz M-CR611 @ 192.168.1.26
 [a] Volumio @ 192.168.1.29
 [a] Kodi (LibreELEC) @ 192.168.1.20

_xml2dict() returns wrong result

<sec:deviceID/> in root/device was parsed as the start of the node, not the node, which made his brother nodes behind him parsed as his childs.

UnicodeDecodeError

While using dlnap I received a UnicodeDecodeError when trying to play a .mp3 file. This was fixed by changing line 272 to f = open(url, 'rb)

volumio : fails to set media - requires extra metadatas

dlna.py run against Volumio returns "ERROR:root:Action Failed".
adding:
&lt;DIDL-Lite xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:upnp=&quot;urn:schemas-upnp-org:metadata-1-0/upnp/&quot; xmlns:dlna=&quot;urn:schemas-dlna-org:metadata-1-0/&quot; xmlns:arib=&quot;urn:schemas-arib-or-jp:elements-1-0/&quot; xmlns:dtcp=&quot;urn:schemas-dtcp-com:metadata-1-0/&quot; xmlns:pv=&quot;http://www.pv.com/pvns/&quot; xmlns=&quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&quot;&gt;&lt;item id=&quot;0$1$12$16583R2268170&quot; refID=&quot;0$1$8I2268170&quot; parentID=&quot;0$1$12$16583&quot; restricted=&quot;1&quot;&gt;&lt;res protocolInfo=&quot;http-get:*:audio/wav:DLNA.ORG_PN=WAV;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01700000000000000000000000000000&quot; &gt;http://example.com/test.wav&lt;/res&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt; to fixes this.

this I extracted from a test run of gupnp-av-cp (strace of an mp3) and adapted to the wav test file.

volumio runs upmpdcli. I sorted this out by adding logelevel = 6 and logfilename = /var/log/upmpdcli.log and running systemctl restart upmpdcli. With vanilla dlna I get:

:2:src/upmpd.cxx:132::checkContentFormat: didl parse failed
:2:src/avtransport.cxx:393::set(Next)AVTransportURI: unsupported format: uri http://example.com/test.wav metadata :2:libupnpp/device/device.cxx:354::UpnpDevice: Action failed: SetAVTransportURI code -101

this is volumio 2.238 running on an Odroid C2.

PS: playback and stop work fine.

TCL

这个应用还支持那些电视呢 TCL智能电视可以吗

Don´t work with [TV]Samsung LED32

$ python --version
Python 3.6.2

$ uname -a
Linux blackbird 4.13.5-1-ARCH #1 SMP PREEMPT Fri Oct 6 09:58:47 CEST 2017 x86_64 GNU/Linux
$ dlnap.py --device tv --play ~/Videos/aviao.mp4 --proxy --log debug

INFO:DlnapDevice:=> New DlnapDevice (ip = 10.0.200.86) initialization..
INFO:DlnapDevice:location: http://10.0.200.86:7676/smp_11_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {'root': [{'specVersion': [{'major': ['1'], 'minor': ['0']}], 'device': [{'deviceType': ['urn:schemas-upnp-org:device:MediaRenderer:1'], 'pnpx:X_compatibleId': ['MS_DigitalMediaDeviceClass_DMR_V001'], 'df:X_deviceCategory': ['Display.TV.LCD Multimedia.DMR'], 'dlna:X_DLNADOC': ['DMR-1.50'], 'friendlyName': ['[TV]Samsung LED32'], 'manufacturer': ['Samsung Electronics'], 'manufacturerURL': ['http://www.samsung.com/sec'], 'modelDescription': ['Samsung TV DMR'], 'modelName': ['UN32J4303'], 'modelNumber': ['AllShare1.0'], 'modelURL': ['http://www.samsung.com/sec'], 'serialNumber': ['20110517DMR'], 'UDN': ['uuid:1017df81-000e-1000-aa9a-b8bbaff0dbce'], 'sec:deviceID': ['CPCHDC2MYPGGE'], 'iconList': [{'icon': [{'mimetype': ['image/jpeg'], 'width': ['48'], 'height': ['48'], 'depth': ['24'], 'url': ['/dmr/icon_SML.jpg']}, {'mimetype': ['image/jpeg'], 'width': ['120'], 'height': ['120'], 'depth': ['24'], 'url': ['/dmr/icon_LRG.jpg']}, {'mimetype': ['image/png'], 'width': ['48'], 'height': ['48'], 'depth': ['24'], 'url': ['/dmr/icon_SML.png']}, {'mimetype': ['image/png'], 'width': ['120'], 'height': ['120'], 'depth': ['24'], 'url': ['/dmr/icon_LRG.png']}]}], 'serviceList': [{'service': [{'serviceType': ['urn:schemas-upnp-org:service:RenderingControl:1'], 'serviceId': ['urn:upnp-org:serviceId:RenderingControl'], 'controlURL': ['/smp_13_'], 'eventSubURL': ['/smp_14_'], 'SCPDURL': ['/smp_12_']}, {'serviceType': ['urn:schemas-upnp-org:service:ConnectionManager:1'], 'serviceId': ['urn:upnp-org:serviceId:ConnectionManager'], 'controlURL': ['/smp_16_'], 'eventSubURL': ['/smp_17_'], 'SCPDURL': ['/smp_15_']}, {'serviceType': ['urn:schemas-upnp-org:service:AVTransport:1'], 'serviceId': ['urn:upnp-org:serviceId:AVTransport'], 'controlURL': ['/smp_19_'], 'eventSubURL': ['/smp_20_'], 'SCPDURL': ['/smp_18_']}]}], 'sec:ProductCap': ['Y2014,WebURIPlayable,SeekTRACK_NR,NavigateInPause,ScreenMirroringP2PMAC=5e:49:7d:b3:1d:2b'], 'pnpx:X_hardwareId': ['VEN_0105&amp;DEV_VD0001']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED32
INFO:DlnapDevice:control_url: /smp_19_
INFO:DlnapDevice:rendering_control_url: /smp_13_
INFO:DlnapDevice:=> Initialization completed
DEBUG:DlnapDevice:POST /smp_19_ HTTP/1.1
User-Agent: /home/mnemonic/bin/dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 10.0.200.86:7676
Content-Length: 401
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Stop"
Connection: close

<?xml version="1.0" encoding="utf-8"?>
         <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <s:Body>
               <u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
                  <InstanceID>0</InstanceID><Speed>1</Speed>
               </u:Stop>
            </s:Body>
         </s:Envelope>
DEBUG:DlnapDevice:POST /smp_19_ HTTP/1.1
User-Agent: /home/mnemonic/bin/dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 10.0.200.86:7676
Content-Length: 532
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
Connection: close

<?xml version="1.0" encoding="utf-8"?>
         <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <s:Body>
               <u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
                  <InstanceID>0</InstanceID><CurrentURI>http://10.0.200.24:8000//home/mnemonic/Videos/aviao.mp4</CurrentURI><CurrentURIMetaData></CurrentURIMetaData>
               </u:SetAVTransportURI>
            </s:Body>
         </s:Envelope>
DEBUG:DlnapDevice:POST /smp_19_ HTTP/1.1
User-Agent: /home/mnemonic/bin/dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 10.0.200.86:7676
Content-Length: 401
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"
Connection: close

<?xml version="1.0" encoding="utf-8"?>
         <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <s:Body>
               <u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
                  <InstanceID>0</InstanceID><Speed>1</Speed>
               </u:Play>
            </s:Body>
         </s:Envelope>
----------------------------------------
Exception happened during processing of request from ('10.0.200.86', 44253)
Traceback (most recent call last):
  File "/usr/lib/python3.6/socketserver.py", line 317, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python3.6/socketserver.py", line 348, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python3.6/socketserver.py", line 361, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python3.6/socketserver.py", line 696, in __init__
    self.handle()
  File "/usr/lib/python3.6/http/server.py", line 418, in handle
    self.handle_one_request()
  File "/usr/lib/python3.6/http/server.py", line 406, in handle_one_request
    method()
  File "/home/mnemonic/bin/dlnap.py", line 295, in do_GET
    shutil.copyfileobj(f, self.wfile)
  File "/usr/lib/python3.6/shutil.py", line 79, in copyfileobj
    buf = fsrc.read(length)
  File "/usr/lib/python3.6/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xee in position 31: invalid continuation byte
----------------------------------------

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.