- Added sensible default behaviour to library.playlist() and files.search(). Both will now return lists of MediaFiles by default.
- Upgraded to Python 3.9 and improved type hinting.
- Added files.playback() to retrieve current playlist from zones based on #7.
- Added library.create_fields() to create new fields. However, MCWS currently fails to execute the request, see https://yabb.jriver.com/interact/index.php/topic,131470.0.html
- Major rewrite of pymcws that fixes everything I started to dislike about the structure.
- Usage is more intuitive now, see Readme.md and example.py for details.
- Editing and saving files is now possible.
- Several additional endpoints implemented.
- Finally added tests. Please read the documentation carefully if you intend to run them. They can destroy your library.
- Implemented playback_loadDSPPreset based on #6.
- Introduced session management for established media servers.
- Added automatic field resolution. Fields are automatically converted to and from their corresponding python types by the API, sparing you the postprocessing.
- Because of this, the required version of MC is now 26. Earlier version support is possible but needs to be requested.
- Play recipes use more reasonable defaults for shuffle and repeat.
- Several smaller bugfixes.
- Added remote connection capabilities. The MediaServer class queries JRiver's web service and tries to determine the best possible connection method automatically.
- Fixed zones being ignored in play_recipes.
- Fixed failing package installation on case-aware file systems.
- Created query recipes for easier querying.
- Improved image and cover art handling.
- Implemented library_values.
- Implemented automatic query escaping for the jriver search language.
- Play recipes allow setting shuffle and repeat states.
- Introduced zone handling.
- Full automatic local ip resolution, also for multiple network adapters.
- Support for getting file info and parsing MPLs.
- Support for getting images for library files.
- More lenient timeouts for local connections should prevent huge queries from failing.
- MediaServer now throws exception if key cannot be resolved instead of failing silently.
- Added mute, shuffle and repeat.
- Added volume control.
- Improved example.py to explain usage better.
- Fixed wrong behavior of playback_stop.
- api.py now has a method to get a server directly from pymcws object. This allows basic usage by only importing pymcws.
- Initial release and proof of concept.
- Resolve media network access keys.
- Issue playback commands.
- Search and play files to different zones on server.
- First play_recipes that facilitate playback of files.