v0.5.0 #1371
Replies: 3 comments
-
There were a few oddities with the |
Beta Was this translation helpful? Give feedback.
-
Just wanted to say thanks for all the hard work that went into this huge release! Appreciate everyone who helped making this happen! |
Beta Was this translation helpful? Give feedback.
-
Thanks |
Beta Was this translation helpful? Give feedback.
-
This version is be a major departure from the architecture up until now. It focuses on implementing the "new Spotify API". This means moving large parts of the Spotify protocol from Mercury to HTTP. A lot of this was reverse engineered before by @devgianlu of librespot-java. It was long overdue that we started implementing it too, not in the least because new features like the hopefully upcoming Spotify HiFi depend on it.
Splitting up the work on the new Spotify API, v0.5.0 brings HTTP-based file downloads and metadata access. Implementing the "dealer" (replacing the current Mercury-based SPIRC message bus with WebSockets, also required for social plays) is a large and separate effort, slated for some later release.
While at it, we are taking the liberty to do some major refactoring to make
librespot
more robust. Consequently not only the Spotify API changed but large parts of thelibrespot
API too. For downstream maintainers, we realise that it can be a lot to move from the current codebase to this one, but believe us it will be well worth it.All these changes are likely to introduce new bugs as well as some regressions. We appreciate all your testing and contributions to the repository: https://github.com/librespot-org/librespot
Changed
Result
or removed (breaking)unwrap
,expect
and returnResult
(breaking)chrono
replaced withtime
(breaking)time
updated (CVE-2020-26235)DeviceType
moved out ofconnect
intocore
(breaking)spirc
context fields (breaking)Clone
,Default
traits tospirc
contextsspclient
(breaking)Session::new
and subsequentsession.connect
. (breaking)ConnectConfig
moved out ofcore
intoconnect
(breaking)client_id
forget_token
moved toSessionConfig
(breaking)FileId
is moved out ofSpotifyId
. For now it will be re-exported.Credentials.username
is now anOption
(breaking)Session::connect
tries multiple access points, retrying each one.autoplay {on|off}
now acts as an override. If unspecified,librespot
now follows the setting in the Connect client that controls it. (breaking)spclient
(breaking)playlist4_external
protobuf (breaking)lewton
toSymphonia
. This improves the Vorbis sound quality, adds support for MP3 as well as for FLAC in the future. (breaking)rodio
: callplay
andpause
Added
librespot
Error
type (breaking)repeat
,set_position_ms
andset_volume
tospirc.rs
event_handler_example.py
spclient
anddealer
access points (breaking)spclient
is the API for HTTP-based calls to the Spotify servers. It supports a lot of functionality, including audio previews and image downloads even if librespot doesn't use that for playback itself.SpotifyId
for local filesSpotifyId
for named playlistsplayer_event_handler.rs
librespot
as a library without Connect should use the 'filter-explicit-content' user attribute in the session.TrackChanged
eventFixed
PlayStatus
to the correct value when Player is loading to avoid blanking out the controls whenself.play_status
isLoadingPlay
orLoadingPause
inspirc.rs
handle_remote_update
inspirc.rs
This discussion was created from the release v0.5.0.
Beta Was this translation helpful? Give feedback.
All reactions