SoCo 0.11 release notes

SoCo 0.11 is a new version of the SoCo library. This release adds new features and fixes several bugs.

SoCo (Sonos Controller) is a simple Python class that allows you to programmatically control Sonos speakers.

New Features and Improvements

  • The new properties is_playing_tv, is_playing_radio and is_playing_line_in have been added (#225)
  • A method get_item_album_art_uri has been added to return the absolute album art full uri so that it is easy to put the album art in user interfaces (#240).
  • Added support for satellite speaker detection in network topology parsing code (#245)
  • Added support to search the music library for tracks, an artists’ albums and an artist’s album’s tracks (#246)
  • A fairly extensive re-organisation of the DIDL metadata handling code, which brings SoCo more into line with the DIDL-Lite spec, as adopted by Sonos. DIDL objects can have now have multiple URIs, and the interface is much simpler. (#256)
  • Event objects now have a timestamp field (#273)
  • The IP address (ie network interface) for discovering Sonos speakers can now be specified (#277)
  • It is now possible to trigger an update of the music library (#286)
  • The event listener port is now configurable (#288)
  • Methods that can only be executed on master speakers will now raise a SoCoSlaveException (#296)
  • An example has been added that shows how to play local files by setting up a temporary HTTP server in python (#307)
  • Test cleanup (#309)


  • The value of the IP_MULTICAST_TTL option is now ensured to be one byte long (#269)
  • Various encoding issues have been fixed (#293, #281, #306)
  • Fix bug with browsing of imported playlists (#265)
  • The discover method was broken in Python 3.4 (#271)
  • An unknown / missing UPnP class in event subscriptions has been added (#266, #301, #303)
  • Fix add_to_queue which was broken since the data structure refactoring (#308, #310)

Backwards Compatability

  • The exception DidlCannotCreateMetadata has been deprecated. DidlMetadataError should be used instead. (#256)
  • Code which has been deprecated for more than 3 releases has been removed. See previous release notes for deprecation notices. (#273)