mirror of
https://github.com/librespot-org/librespot.git
synced 2025-10-05 02:39:53 +02:00

* playback: handle errors when opening mixer * chore: update CHANGELOG.md * fix tests and typo
63 lines
No EOL
2 KiB
Markdown
63 lines
No EOL
2 KiB
Markdown
[//]: # (This readme is optimized for inline rustdoc, if some links don't work, they will when included in lib.rs)
|
|
|
|
# Connect
|
|
|
|
The connect module of librespot. Provides the option to create your own connect device
|
|
and stream to it like any other official spotify client.
|
|
|
|
The [`Spirc`] is the entrypoint to creating your own connect device. It can be
|
|
configured with the given [`ConnectConfig`] options and requires some additional data
|
|
to start up the device.
|
|
|
|
When creating a new [`Spirc`] it returns two items. The [`Spirc`] itself, which is can
|
|
be used as to control the local connect device. And a [`Future`](std::future::Future),
|
|
lets name it `SpircTask`, that starts and executes the event loop of the connect device
|
|
when awaited.
|
|
|
|
A basic example in which the `Spirc` and `SpircTask` is used can be found here:
|
|
[`examples/play_connect.rs`](../examples/play_connect.rs).
|
|
|
|
# Example
|
|
|
|
```rust
|
|
use std::{future::Future, thread};
|
|
|
|
use librespot_connect::{ConnectConfig, Spirc};
|
|
use librespot_core::{authentication::Credentials, Error, Session, SessionConfig};
|
|
use librespot_playback::{
|
|
audio_backend, mixer,
|
|
config::{AudioFormat, PlayerConfig},
|
|
mixer::{MixerConfig, NoOpVolume},
|
|
player::Player
|
|
};
|
|
|
|
async fn create_basic_spirc() -> Result<(), Error> {
|
|
let credentials = Credentials::with_access_token("access-token-here");
|
|
let session = Session::new(SessionConfig::default(), None);
|
|
|
|
let backend = audio_backend::find(None).expect("will default to rodio");
|
|
|
|
let player = Player::new(
|
|
PlayerConfig::default(),
|
|
session.clone(),
|
|
Box::new(NoOpVolume),
|
|
move || {
|
|
let format = AudioFormat::default();
|
|
let device = None;
|
|
backend(device, format)
|
|
},
|
|
);
|
|
|
|
let mixer = mixer::find(None).expect("will default to SoftMixer");
|
|
|
|
let (spirc, spirc_task): (Spirc, _) = Spirc::new(
|
|
ConnectConfig::default(),
|
|
session,
|
|
credentials,
|
|
player,
|
|
mixer(MixerConfig::default())?
|
|
).await?;
|
|
|
|
Ok(())
|
|
}
|
|
``` |