Supysonic
Python implementation of the Subsonic server API.
Python implementation of the Subsonic server API.
# Supysonic
Supysonic is a Python implementation of the [Subsonic][] server API.

[](https://codecov.io/gh/spl0k/supysonic)

Current supported features are:
* browsing (by folders or tags)
* streaming of various audio file formats
* transcoding
* user or random playlists
* cover art
* starred tracks/albums and ratings
* [Last.fm][lastfm] scrobbling
* [ListenBrainz][listenbrainz] scrobbling
* Jukebox mode
Supysonic currently targets the version 1.12.0 of the Subsonic API. For more
details, go check the [API implementation status][docs-api].
[subsonic]: http://www.subsonic.org/
[lastfm]: https://www.last.fm/
[listenbrainz]: https://listenbrainz.org/
[docs-api]: https://supysonic.readthedocs.io/en/latest/api.html
## Documentation
Full documentation is available at https://supysonic.readthedocs.io/
## Quickstart
Use the following commands to install Supysonic, create an admin user, define a
library folder, scan it and start serving on port 5722 using [Gunicorn][].
$ pip install supysonic
$ pip install gunicorn
$ supysonic-cli user add MyUserName
$ supysonic-cli user setroles --admin MyUserName
$ supysonic-cli folder add MyLibrary /home/username/Music
$ supysonic-cli folder scan MyLibrary
$ supysonic-server
You should now be able to enjoy your music with the client of your choice!
But using only the above commands will use a default configuration and
especially storing the database in a temporary directory. Head over to the
documentaiton for [full setup instructions][docs-setup], plus other options if
you don't want to use Gunicorn.
Note that there's also an optional [daemon][docs-daemon] that watches for
library changes and provides support for other features such as the
jukebox mode.
[gunicorn]: https://gunicorn.org/
[docs-setup]: https://supysonic.readthedocs.io/en/latest/setup/index.html
[docs-daemon]: https://supysonic.readthedocs.io/en/latest/setup/daemon.html
## Development stuff
For those wishing to collaborate on the project, since Supysonic uses [Flask][]
you can use its development server which provides automatic reloading and
in-browser debugging among other things. To start said server:
$ export FLASK_APP="supysonic.web:create_application()"
$ export FLASK_ENV=development
$ flask run
And there's also the tests (which require `lxml` to run):
$ pip install lxml
$ python -m unittest
$ python -m unittest tests.net.suite
The last command runs a few tests that make HTTP requests to remote third-party
services (namely Last.fm, ListenBrainz and ChartLyrics).
[flask]: https://flask.palletsprojects.com/
Extensible music server. Offers a superset of the mpd API, as well as integration with 3rd party services like Spotify, SoundCloud etc.
Audiobook and podcast server. It streams all audio formats, keeps and syncs progress across devices. Comes with open-source apps for Android and iOS.