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
|
|
|
|
|
|
|
## Status
|
|
|
|
*librespot* is currently under development and is not fully functional yet. You
|
|
|
|
are however welcome to experiment with it.
|
|
|
|
|
|
|
|
## Building
|
2016-03-11 13:14:01 +00:00
|
|
|
Rust 1.7.0 or later is required to build librespot.
|
2015-07-14 22:25:44 +00:00
|
|
|
|
2016-01-20 13:36:58 +00:00
|
|
|
It also requires a C and C++ toolchain, with libprotoc and 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
|
|
|
|
sudo apt-get install build-essential portaudio19-dev libprotoc-dev
|
|
|
|
```
|
2015-12-18 18:01:25 +00:00
|
|
|
|
2016-01-20 13:36:58 +00:00
|
|
|
On OS X, using homebrew :
|
|
|
|
```shell
|
|
|
|
brew install portaudio protobuf
|
|
|
|
```
|
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-02-25 22:30:49 +00:00
|
|
|
target/release/librespot --appkey APPKEY --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.
|
|
|
|
dns-sd or avahi's compatibility layer is required for this. On debian/ubuntu this is the
|
|
|
|
`libavahi-compat-libdnssd-dev` package. It come preinstalled on OS X.
|
|
|
|
|
|
|
|
It must be enabled at build time :
|
|
|
|
```shell
|
2016-02-25 22:30:49 +00:00
|
|
|
cargo build --release --features discovery
|
2016-01-20 13:36:58 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
When running *librespot* simply omit the `--username` argument.
|
|
|
|
|
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
|
|
|
|
cargo build --no-default-features
|
|
|
|
```
|
|
|
|
|
|
|
|
This produces better compilation error messages than with the default configuration.
|
|
|
|
|
2016-01-20 13:36:58 +00:00
|
|
|
## Facebook Accounts
|
2015-07-27 19:36:13 +00:00
|
|
|
If you connect using a facebook account, librespot will not show up among the
|
|
|
|
devices in the Spotify app. What you need to do is apply for a
|
|
|
|
[device password](http://www.spotify.com/account/set-device-password/) and
|
|
|
|
use that to sign in instead.
|
|
|
|
|
2015-07-14 22:25:44 +00:00
|
|
|
## Disclaimer
|
|
|
|
Using this code to connect to Spotify's API is probably forbidden by them, and
|
|
|
|
might result in you application key getting banned. Use at you own risk
|
|
|
|
|
|
|
|
## 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.
|
|
|
|
|