mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
Have player handle Mercury errors while loading tracks.
This commit is contained in:
parent
3fe3849588
commit
04b52d7878
1 changed files with 24 additions and 5 deletions
|
@ -623,9 +623,15 @@ impl PlayerInternal {
|
||||||
spotify_id: SpotifyId,
|
spotify_id: SpotifyId,
|
||||||
position: i64,
|
position: i64,
|
||||||
) -> Option<(Decoder, f32, StreamLoaderController, usize)> {
|
) -> Option<(Decoder, f32, StreamLoaderController, usize)> {
|
||||||
let audio = AudioItem::get_audio_item(&self.session, spotify_id)
|
|
||||||
.wait()
|
let audio = match AudioItem::get_audio_item(&self.session, spotify_id).wait() {
|
||||||
.unwrap();
|
Ok(audio) => audio,
|
||||||
|
Err(_) => {
|
||||||
|
error!("Unable to load audio item.");
|
||||||
|
return None
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
info!("Loading <{}> with Spotify URI <{}>", audio.name, audio.uri);
|
info!("Loading <{}> with Spotify URI <{}>", audio.name, audio.uri);
|
||||||
|
|
||||||
let audio = match self.find_available_alternative(&audio) {
|
let audio = match self.find_available_alternative(&audio) {
|
||||||
|
@ -673,7 +679,13 @@ impl PlayerInternal {
|
||||||
let encrypted_file =
|
let encrypted_file =
|
||||||
AudioFile::open(&self.session, file_id, bytes_per_second, play_from_beginning);
|
AudioFile::open(&self.session, file_id, bytes_per_second, play_from_beginning);
|
||||||
|
|
||||||
let encrypted_file = encrypted_file.wait().unwrap();
|
let encrypted_file = match encrypted_file.wait() {
|
||||||
|
Ok(encrypted_file) => encrypted_file,
|
||||||
|
Err(_) => {
|
||||||
|
error!("Unable to load encrypted file.");
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
let mut stream_loader_controller = encrypted_file.get_stream_loader_controller();
|
let mut stream_loader_controller = encrypted_file.get_stream_loader_controller();
|
||||||
|
|
||||||
|
@ -685,7 +697,14 @@ impl PlayerInternal {
|
||||||
stream_loader_controller.set_random_access_mode();
|
stream_loader_controller.set_random_access_mode();
|
||||||
}
|
}
|
||||||
|
|
||||||
let key = key.wait().unwrap();
|
let key = match key.wait() {
|
||||||
|
Ok(key) => key,
|
||||||
|
Err(_) => {
|
||||||
|
error!("Unable to load decryption key");
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
let mut decrypted_file = AudioDecrypt::new(key, encrypted_file);
|
let mut decrypted_file = AudioDecrypt::new(key, encrypted_file);
|
||||||
|
|
||||||
let normalisation_factor = match NormalisationData::parse_from_file(&mut decrypted_file) {
|
let normalisation_factor = match NormalisationData::parse_from_file(&mut decrypted_file) {
|
||||||
|
|
Loading…
Reference in a new issue