2015-07-14 22:25:44 +00:00
|
|
|
# librespot
|
|
|
|
*librespot* is an open source client library for Spotify. It enables
|
|
|
|
applications to use Spotify's service, without using the official but
|
2016-01-20 13:36:58 +00:00
|
|
|
closed-source libspotify. Additionally, it will provide extra features
|
|
|
|
which are not available in the official library.
|
2015-07-14 22:25:44 +00:00
|
|
|
|
2017-03-30 19:09:26 +00:00
|
|
|
**I will be very busy with other stuff until July, and won't be able to
|
|
|
|
dedicate much time to librespot. Please keep using it and open issues,
|
|
|
|
but it's likely I won't be able to answer them until then. Non-trivial
|
2017-03-30 19:15:54 +00:00
|
|
|
pull requests will probably not be reviewed either.**
|
2017-03-30 19:09:26 +00:00
|
|
|
|
2015-07-14 22:25:44 +00:00
|
|
|
## Building
|
2017-02-22 15:30:59 +00:00
|
|
|
Rust 1.15.0 or later is required to build librespot.
|
2015-07-14 22:25:44 +00:00
|
|
|
|
2016-11-21 02:48:17 +00:00
|
|
|
It also requires a C, with portaudio.
|
2015-07-14 22:25:44 +00:00
|
|
|
|
2016-01-20 13:36:58 +00:00
|
|
|
On debian / ubuntu, the following command will install these dependencies :
|
|
|
|
```shell
|
2016-11-21 02:48:17 +00:00
|
|
|
sudo apt-get install build-essential portaudio19-dev
|
2016-01-20 13:36:58 +00:00
|
|
|
```
|
2015-12-18 18:01:25 +00:00
|
|
|
|
2016-03-17 13:20:27 +00:00
|
|
|
On Fedora systems, the following command will install these dependencies :
|
|
|
|
```shell
|
2016-11-21 02:48:17 +00:00
|
|
|
sudo dnf install portaudio-devel make gcc
|
2016-03-17 13:20:27 +00:00
|
|
|
```
|
|
|
|
|
2016-01-20 13:36:58 +00:00
|
|
|
On OS X, using homebrew :
|
|
|
|
```shell
|
2016-11-21 02:48:17 +00:00
|
|
|
brew install portaudio
|
2016-01-20 13:36:58 +00:00
|
|
|
```
|
2016-01-16 00:21:27 +00:00
|
|
|
|
2015-07-14 22:25:44 +00:00
|
|
|
Once you've cloned this repository you can build *librespot* using `cargo`.
|
|
|
|
```shell
|
2016-02-25 22:30:49 +00:00
|
|
|
cargo build --release
|
2015-07-14 22:25:44 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
A sample program implementing a headless Spotify Connect receiver is provided.
|
|
|
|
Once you've built *librespot*, run it using :
|
|
|
|
```shell
|
2016-07-06 07:32:43 +00:00
|
|
|
target/release/librespot --username USERNAME --cache CACHEDIR --name DEVICENAME
|
2015-07-14 22:25:44 +00:00
|
|
|
```
|
|
|
|
|
2016-01-20 13:36:58 +00:00
|
|
|
## Discovery mode
|
|
|
|
*librespot* can be run in discovery mode, in which case no password is required at startup.
|
2016-05-07 11:55:59 +00:00
|
|
|
For that, simply omit the `--username` argument.
|
2016-01-20 13:36:58 +00:00
|
|
|
|
2016-03-20 16:16:11 +00:00
|
|
|
## Audio Backends
|
|
|
|
*librespot* supports various audio backends. Multiple backends can be enabled at compile time by enabling the
|
|
|
|
corresponding cargo feature. By default, only PortAudio is enabled.
|
|
|
|
|
|
|
|
A specific backend can selected at runtime using the `--backend` switch.
|
|
|
|
|
|
|
|
```shell
|
|
|
|
cargo build --features portaudio-backend
|
|
|
|
target/release/librespot [...] --backend portaudio
|
|
|
|
```
|
|
|
|
|
|
|
|
The following backends are currently available :
|
2016-03-14 02:16:59 +00:00
|
|
|
- ALSA
|
2016-03-20 19:16:32 +00:00
|
|
|
- PortAudio
|
2016-03-21 15:39:48 +00:00
|
|
|
- PulseAudio
|
2016-03-20 16:16:11 +00:00
|
|
|
|
2017-02-16 21:38:48 +00:00
|
|
|
## Cross-compiling
|
|
|
|
A cross compilation environment is provided as a docker image.
|
|
|
|
Build the image from the root of the project with the following command :
|
|
|
|
|
|
|
|
```
|
|
|
|
$ docker build -t librespot-cross -f contrib/Dockerfile .
|
|
|
|
```
|
|
|
|
|
|
|
|
The resulting image can be used to build librespot for linux x86_64, armhf and armel.
|
|
|
|
The compiled binaries will be located in /tmp/librespot-build
|
|
|
|
|
|
|
|
```
|
|
|
|
docker run -v /tmp/librespot-build:/build librespot-cross
|
|
|
|
```
|
|
|
|
|
|
|
|
If only one architecture is desired, cargo can be invoked directly with the appropriate options :
|
|
|
|
```shell
|
2017-02-22 15:02:36 +00:00
|
|
|
docker run -v /tmp/librespot-build:/build librespot-cross cargo build --release --no-default-features --features alsa-backend
|
|
|
|
docker run -v /tmp/librespot-build:/build librespot-cross cargo build --release --target arm-unknown-linux-gnueabihf --no-default-features --features alsa-backend
|
|
|
|
docker run -v /tmp/librespot-build:/build librespot-cross cargo build --release --target arm-unknown-linux-gnueabi --no-default-features --features alsa-backend
|
2017-02-16 21:38:48 +00:00
|
|
|
```
|
|
|
|
|
2017-03-05 10:03:56 +00:00
|
|
|
Don't forget to set the `with-tremor` feature flag if your target device does not have floating-point capabilities.
|
|
|
|
|
2016-03-11 13:14:01 +00:00
|
|
|
## Development
|
|
|
|
When developing *librespot*, it is preferable to use Rust nightly, and build it using the following :
|
|
|
|
```shell
|
2016-07-06 01:29:38 +00:00
|
|
|
cargo build --no-default-features --features "nightly portaudio-backend"
|
2016-03-11 13:14:01 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
This produces better compilation error messages than with the default configuration.
|
|
|
|
|
2015-07-14 22:25:44 +00:00
|
|
|
## Disclaimer
|
2016-07-06 07:32:43 +00:00
|
|
|
Using this code to connect to Spotify's API is probably forbidden by them.
|
|
|
|
Use at your own risk.
|
2015-07-14 22:25:44 +00:00
|
|
|
|
|
|
|
## Contact
|
|
|
|
Come and hang out on gitter if you need help or want to offer some.
|
|
|
|
https://gitter.im/sashahilton00/spotify-connect-resources
|
|
|
|
|
|
|
|
## License
|
|
|
|
Everything in this repository is licensed under the MIT license.
|
|
|
|
|