SoCo 0.10 release notes *********************** **SoCo 0.10** 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 ============ * Add support for taking a snapshot of the Sonos state, and then to restore it later (`#224 `_, `#251 `_) * Added create_sonos_playlist_from_queue. Creates a new Sonos playlist from the current queue (`#229 `_) Improvements ============ * Added a queue_size property to quickly return the size of the queue without reading any items (`#217 `_) * Add metadata to return structure of get_current_track_info (`#220 `_) * Add option to play_uri that allows for the item to be set and then optionally played (`#219 `_) * Add option to play_uri that allows playing with a URI and title instead of metadata (`#221 `_) * Get the item ID from the XML responses which enables adding tracks for music services such as Rhapsody which do not have all the detail in the item URI (`#233 `_) * Added label and short_label properties, to provide a consistent readable label for group members (`#228 `_) * Improved documentation (`#248 `_, `#253 `_, `#259 `_) * Improved code examples (`#250 `_, `#252 `_) Bugfixes ======== * Fixed a bug where ``get_ml_item()`` would fail if a radio station was played (`#226 `_) * Fixed a timeout-related regression in ``soco.discover()`` ( `#244 `_) * Discovery code fixed to account for closing of multicast sockets by certain devices (`#202 `_, `#201 `_) * Fixed a bug where sometimes zone groups would be created without a coordinator (`#230 `_) Backwards Compatability ======================= The metadata classes (``ML*``) have all been renamed (generally to ``Didl*``), and aligned more closely with the underlying XML. The Music Services data structures (``MS*``) have been moved to their own module, and metadata for radio broadcasts is now returned properly (`#243 `_). The ``URI`` class has been removed. As an alternative the method :meth:`soco.SoCo.play_uri` can be used to enqueue and play an URI. The class :class:`soco.data_structures.DIDLObject` can be used if an object is required. Work is still ongoing on the metadata classes, so further changes should be expected.