soco.data_structures module

This module contains classes for handling DIDL-Lite metadata.

DIDL is the Digital Item Declaration Language , an XML schema which is part of MPEG21. DIDL-Lite is a cut-down version of the schema which is part of the UPnP ContentDirectory specification. It is the XML schema used by Sonos for carrying metadata representing many items such as tracks, playlists, composers, albums etc. Although Sonos uses ContentDirectory v1, the document for v2 [pdf] is more helpful.

soco.data_structures.to_didl_string(*args)[source]

Convert any number of DidlObjects to a unicode xml string.

Parameters:*args (DidlObject) – One or more DidlObject (or subclass) instances.
Returns:A unicode string representation of DIDL-Lite XML in the form '<DIDL-Lite ...>...</DIDL-Lite>'.
Return type:str
class soco.data_structures.DidlResource(uri, protocol_info, import_uri=None, size=None, duration=None, bitrate=None, sample_frequency=None, bits_per_sample=None, nr_audio_channels=None, resolution=None, color_depth=None, protection=None)[source]

Identifies a resource, typically some type of a binary asset, such as a song.

It is represented in XML by a <res> element, which contains a uri that identifies the resource.

Parameters:
  • uri (str) – value of the <res> tag, typically a URI. It must be properly escaped (percent encoded) as described in RFC 3986
  • protocol_info (str) – a string in the form a:b:c:d that identifies the streaming or transport protocol for transmitting the resource. A value is required. For more information see section 2.5.2 of the UPnP specification [ pdf]
  • import_uri (str, optional) – uri locator for resource update.
  • size (int, optional) – size in bytes.
  • duration (str, optional) – duration of the playback of the res at normal speed (H*:MM:SS:F* or H*:MM:SS:F0/F1)
  • bitrate (int, optional) – bitrate in bytes/second.
  • sample_frequency (int, optional) – sample frequency in Hz.
  • bits_per_sample (int, optional) – bits per sample.
  • nr_audio_channels (int, optional) – number of audio channels.
  • resolution (str, optional) – resolution of the resource (X*Y).
  • color_depth (int, optional) – color depth in bits.
  • protection (str, optional) – statement of protection type.

Note

Not all of the parameters are used by Sonos. In general, only uri, protocol_info and duration seem to be important.

uri = None

(str) – a percent encoded URI

protocol_info = None

(str) – protocol information.

duration = None

str – playback duration

classmethod from_element(element)[source]

Set the resource properties from a <res> element.

Parameters:element (Element) – The <res> element
to_element()[source]

Return an ElementTree Element based on this resource.

Returns:an Element.
Return type:Element
to_dict(remove_nones=False)[source]

Return a dict representation of the DidlResource.

Parameters:remove_nones (bool, optional) – Optionally remove dictionary elements when their value is None.
Returns:a dict representing the DidlResource
Return type:dict
classmethod from_dict(content)[source]

Create an instance from a dict.

An alternative constructor. Equivalent to DidlResource(**content).

Parameters:content (dict) – a dict containing metadata information. Required. Valid keys are the same as the parameters for DidlResource.
class soco.data_structures.DidlMetaClass[source]

Meta class for all Didl objects.

Create a new instance.

Parameters:
  • name (str) – Name of the class.
  • bases (tuple) – Base classes.
  • attrs (dict) – attributes defined for the class.
class soco.data_structures.DidlObject(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Abstract base class for all DIDL-Lite items.

You should not need to instantiate this. Its XML representation looks like this:

<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/"
 xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">
  <item id="...self.item_id..." parentID="...cls.parent_id..."
    restricted="true">
    <dc:title>...self.title...</dc:title>
    <upnp:class>...self.item_class...</upnp:class>
    <desc id="cdudn"
      nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">
      RINCON_AssociatedZPUDN
    </desc>
  </item>
</DIDL-Lite>
Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'write_status': ('upnp', 'writeStatus')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

classmethod from_element(element)[source]

Create an instance of this class from an ElementTree xml Element.

An alternative constructor. The element must be a DIDL-Lite <item> or <container> element, and must be properly namespaced.

Parameters:xml (Element) – An Element object.
classmethod from_dict(content)[source]

Create an instance from a dict.

An alternative constructor. Equivalent to DidlObject(**content).

Parameters:content (dict) – a dict containing metadata information. Required. Valid keys are the same as the parameters for DidlObject.
to_dict(remove_nones=False)[source]

Return the dict representation of the instance.

Parameters:remove_nones – Optionally remove dictionary elements when their value is None.
to_element(include_namespaces=False)[source]

Return an ElementTree Element representing this instance.

Parameters:include_namespaces (bool, optional) – If True, include xml namespace attributes on the root element
Returns:an Element.
Return type:Element
get_uri(resource_nr=0)[source]

Return the uri to use for playing this item.

Parameters:resource_nr (int) – The index of the resource. Note that there is no known object with more than one resource, so you can probably keep the default value (0).
Returns:The uri.
Return type:str
set_uri(uri, resource_nr=0, protocol_info=None)[source]

Set a resource uri for this instance. If no resource exists, create a new one with the given protocol info.

Parameters:
  • uri (str) – The resource uri.
  • resource_nr (int) – The index of the resource on which to set the uri. If it does not exist, a new resource is added to the list. Note that by default, only the uri of the first resource is used for playing the item.
  • protocol_info (str) – Protocol info for the resource. If none is given and the resource does not exist yet, a default protocol info is constructed as ‘[uri prefix]:::*‘.
class soco.data_structures.DidlItem(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

A basic content directory item.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.item'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'stream_content': ('r', 'streamContent'), 'creator': ('dc', 'creator'), 'write_status': ('upnp', 'writeStatus'), 'radio_show': ('r', 'radioShowMd'), 'album_art_uri': ('upnp', 'albumArtURI')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlAudioItem(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

An audio item.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.item.audioItem'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'publisher': ('dc', 'publisher'), 'relation': ('dc', 'relation'), 'genre': ('upnp', 'genre'), 'radio_show': ('r', 'radioShowMd'), 'stream_content': ('r', 'streamContent'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'album_art_uri': ('upnp', 'albumArtURI')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlMusicTrack(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a music library track.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.item.audioItem.musicTrack'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'publisher': ('dc', 'publisher'), 'relation': ('dc', 'relation'), 'genre': ('upnp', 'genre'), 'album': ('upnp', 'album'), 'artist': ('upnp', 'artist'), 'radio_show': ('r', 'radioShowMd'), 'contributor': ('dc', 'contributor'), 'stream_content': ('r', 'streamContent'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language'), 'original_track_number': ('upnp', 'originalTrackNumber'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'album_art_uri': ('upnp', 'albumArtURI'), 'date': ('dc', 'date'), 'playlist': ('upnp', 'playlist')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlAudioBroadcast(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents an audio broadcast.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.item.audioItem.audioBroadcast'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'region': ('upnp', 'region'), 'publisher': ('dc', 'publisher'), 'relation': ('dc', 'relation'), 'genre': ('upnp', 'genre'), 'channel_nr': ('upnp', 'channelNr'), 'radio_show': ('r', 'radioShowMd'), 'radio_call_sign': ('upnp', 'radioCallSign'), 'stream_content': ('r', 'streamContent'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'album_art_uri': ('upnp', 'albumArtURI'), 'radio_station_id': ('upnp', 'radioStationID')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlAudioBroadcastFavorite(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents an audio broadcast Sonos favorite.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.item.audioItem.audioBroadcast.sonos-favorite'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'region': ('upnp', 'region'), 'publisher': ('dc', 'publisher'), 'relation': ('dc', 'relation'), 'genre': ('upnp', 'genre'), 'channel_nr': ('upnp', 'channelNr'), 'radio_show': ('r', 'radioShowMd'), 'radio_call_sign': ('upnp', 'radioCallSign'), 'stream_content': ('r', 'streamContent'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'album_art_uri': ('upnp', 'albumArtURI'), 'radio_station_id': ('upnp', 'radioStationID')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlContainer(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a music library container.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container'

str - the DIDL Lite class for this object.

tag = 'container'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'write_status': ('upnp', 'writeStatus')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlAlbum(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

A content directory album.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.album'

str - the DIDL Lite class for this object.

tag = 'container'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'publisher': ('dc', 'publisher'), 'relation': ('dc', 'relation'), 'date': ('dc', 'date'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'contributor': ('dc', 'contributor')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlMusicAlbum(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a music library album.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.album.musicAlbum'

str - the DIDL Lite class for this object.

tag = 'container'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'producer': ('upnp', 'producer'), 'publisher': ('dc', 'publisher'), 'relation': ('dc', 'relation'), 'genre': ('upnp', 'genre'), 'artist': ('upnp', 'artist'), 'radio_show': ('r', 'radioShowMd'), 'toc': ('upnp', 'toc'), 'stream_content': ('r', 'streamContent'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'album_art_uri': ('upnp', 'albumArtURI')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlMusicAlbumFavorite(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a Sonos favorite music library album.

This class is not part of the DIDL spec and is Sonos specific.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.album.musicAlbum.sonos-favorite'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'publisher': ('dc', 'publisher'), 'relation': ('dc', 'relation'), 'date': ('dc', 'date'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'contributor': ('dc', 'contributor')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlMusicAlbumCompilation(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a Sonos favorite music library compilation.

This class is not part of the DIDL spec and is Sonos specific.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.album.musicAlbum.compilation'

str - the DIDL Lite class for this object.

tag = 'container'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'publisher': ('dc', 'publisher'), 'relation': ('dc', 'relation'), 'date': ('dc', 'date'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'contributor': ('dc', 'contributor')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlPerson(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

A content directory class representing a person.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.person'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language')}

dfdf dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlComposer(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a music library composer.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.person.composer'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlMusicArtist(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a music library artist.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.person.musicArtist'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'artist_discography_uri': ('upnp', 'artistDiscographyURI'), 'creator': ('dc', 'creator'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language'), 'genre': ('upnp', 'genre')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlAlbumList(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a music library album list.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.albumlist'

str - the DIDL Lite class for this object.

tag = 'container'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'write_status': ('upnp', 'writeStatus')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlPlaylistContainer(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a music library play list.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.playlistContainer'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'producer': ('dc', 'producer'), 'artist': ('upnp', 'artist'), 'genre': ('upnp', 'genre'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'contributor': ('dc', 'contributor'), 'date': ('dc', 'date')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

item_class = 'object.container.playlistContainer'
class soco.data_structures.DidlSameArtist(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents all tracks by a single artist.

This type is returned by browsing an artist or a composer

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.playlistContainer.sameArtist'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'producer': ('dc', 'producer'), 'artist': ('upnp', 'artist'), 'genre': ('upnp', 'genre'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'contributor': ('dc', 'contributor'), 'date': ('dc', 'date')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlPlaylistContainerFavorite(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a Sonos favorite play list.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.playlistContainer.sonos-favorite'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'producer': ('dc', 'producer'), 'artist': ('upnp', 'artist'), 'genre': ('upnp', 'genre'), 'description': ('dc', 'description'), 'write_status': ('upnp', 'writeStatus'), 'language': ('dc', 'language'), 'long_description': ('upnp', 'longDescription'), 'rights': ('dc', 'rights'), 'contributor': ('dc', 'contributor'), 'date': ('dc', 'date')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlGenre(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

A content directory class representing a general genre.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.genre'

str - the DIDL Lite class for this object.

tag = 'container'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'write_status': ('upnp', 'writeStatus'), 'description': ('dc', 'description'), 'long_description': ('upnp', 'longDescription'), 'genre': ('upnp', 'genre')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.DidlMusicGenre(title, parent_id, item_id, restricted=True, resources=None, desc='RINCON_AssociatedZPUDN', **kwargs)[source]

Class that represents a music genre.

Parameters:
  • title (str) – the title for the item.
  • parent_id (str) – the parent ID for the item.
  • item_id (str) – the ID for the item.
  • restricted (bool) – whether the item can be modified. Default True
  • resources (list, optional) – a list of resources for this object.
  • None. (Default) –
  • desc (str) – A DIDL descriptor, default 'RINCON_AssociatedZPUDN'. This is not the same as “description”. It is used for identifying the relevant third party music service.
  • **kwargs – Extra metadata. What is allowed depends on the _translation class attribute, which in turn depends on the DIDL class.
item_class = 'object.container.genre.musicGenre'

str - the DIDL Lite class for this object.

tag = 'item'

str - the XML element tag name used for this instance.

_translation = {'creator': ('dc', 'creator'), 'write_status': ('upnp', 'writeStatus'), 'description': ('dc', 'description'), 'long_description': ('upnp', 'longDescription'), 'genre': ('upnp', 'genre')}

dict - A dict used to translate between instance attribute names and XML tags/namespaces. It also serves to define the allowed tags/attributes for this instance. Each key an attribute name and each key is a (namespace, tag) tuple.

class soco.data_structures.ListOfMusicInfoItems(items, number_returned, total_matches, update_id)[source]

Abstract container class for a list of music information items.

Instances of this class are returned from queries into the music library or to music services. The attributes total_matches and number_returned are used to ascertain whether paging is required in order to retrive all elements of the query. total_matches is the total number of results to the query and number_returned is the number of results actually returned. If the two differ, paging is required. Paging is typically performed with the start and max_items arguments to the query method. See e.g. the get_music_library_information() method for details.

number_returned

str – the number of returned matches.

total_matches

str – the number of total matches.

update_id

str – the update ID.

class soco.data_structures.SearchResult(items, search_type, number_returned, total_matches, update_id)[source]

Container class that represents a search or browse result.

Browse is just a special case of search.

search_type

str – the search type.

class soco.data_structures.Queue(items, number_returned, total_matches, update_id)[source]

Container class that represents a queue.