Add cache parameter to Librespot integration

This commit is contained in:
Niklas Grebe 2017-10-19 12:55:09 +02:00 committed by Johannes Pohl
parent 2b3f08aa5f
commit d34fbef34f
3 changed files with 5 additions and 2 deletions

View file

@ -133,7 +133,7 @@ Snapserver supports [shairport-sync](https://github.com/mikebrady/shairport-sync
### Spotify
Snapserver supports [librespot](https://github.com/plietar/librespot) with `pipe` backend.
1. Build and copy the `librespot` binary somewhere to your `PATH`, e.g. `/usr/local/bin/`
2. Configure snapserver with `-s "spotify:///librespot?name=Spotify[&username=<my username>&password=<my password>][&devicename=Snapcast][&bitrate=320][&onstart=<start command>][&onstop=<stop command>]"`
2. Configure snapserver with `-s "spotify:///librespot?name=Spotify[&username=<my username>&password=<my password>][&devicename=Snapcast][&bitrate=320][&onstart=<start command>][&onstop=<stop command>][&cache=<cache dir>]"`
* Valid bitrates are 96, 160, 320
* `start command` and `stop command` are executed by Librespot at start/stop
* For example: `onstart=/usr/bin/logger -t Snapcast Starting spotify...`

View file

@ -35,6 +35,7 @@ SpotifyStream::SpotifyStream(PcmListener* pcmListener, const StreamUri& uri) : P
string username = uri_.getQuery("username", "");
string password = uri_.getQuery("password", "");
string cache = uri_.getQuery("cache", "");
string bitrate = uri_.getQuery("bitrate", "320");
string devicename = uri_.getQuery("devicename", "Snapcast");
string onstart = uri_.getQuery("onstart", "");
@ -47,6 +48,8 @@ SpotifyStream::SpotifyStream(PcmListener* pcmListener, const StreamUri& uri) : P
if (!username.empty() && !password.empty())
params_ += " --username \"" + username + "\" --password \"" + password + "\"";
params_ += " --bitrate " + bitrate + " --backend pipe";
if (!cache.empty())
params_ += " --cache \"" + cache + "\"";
if (!onstart.empty())
params_ += " --onstart \"" + onstart + "\"";
if (!onstop.empty())

View file

@ -28,7 +28,7 @@
* Implements EncoderListener to get the encoded data.
* Data is passed to the PcmListener
* usage:
* snapserver -s "spotify:///librespot?name=Spotify&username=<my username>&password=<my password>[&devicename=Snapcast][&bitrate=320]"
* snapserver -s "spotify:///librespot?name=Spotify&username=<my username>&password=<my password>[&devicename=Snapcast][&bitrate=320][&cache=<cache dir>]"
*/
class SpotifyStream : public ProcessStream, WatchdogListener
{