Commit graph

125 commits

Author SHA1 Message Date
Roderick van Domburg
096269c1d0
Reintroduce offset for passthrough decoder 2022-01-03 22:20:29 +01:00
Roderick van Domburg
7921f23927
Improve format handling and support MP3
- Switch from `lewton` to `Symphonia`. This is a pure Rust demuxer
  and decoder in active development that supports a wide range of
  formats, including Ogg Vorbis, MP3, AAC and FLAC for future HiFi
  support. At the moment only Ogg Vorbis and MP3 are enabled; all
  AAC files are DRM-protected.

- Bump MSRV to 1.51, required for `Symphonia`.

- Filter out all files whose format is not specified.

- Not all episodes seem to be encrypted. If we can't get an audio
  key, try and see if we can play the file without decryption.

- After seeking, report the actual position instead of the target.

- Remove the 0xa7 bytes offset from `Subfile`, `Symphonia` does
  not balk at Spotify's custom Ogg packet before it. This also
  simplifies handling of formats other than Ogg Vorbis.

- When there is no next track to load, signal the UI that the
  player has stopped. Before, the player would get stuck in an
  infinite reloading loop when there was only one track in the
  queue and that track could not be loaded.
2022-01-03 00:13:28 +01:00
Roderick van Domburg
0fdff0d3fd
Follow client setting to filter explicit tracks
- Don't load explicit tracks when the client setting forbids them

 - When a client switches explicit filtering on *while* playing
   an explicit track, immediately skip to the next track
2021-12-30 23:50:28 +01:00
Roderick van Domburg
2af34fc674
Add product metrics to requests 2021-12-30 22:36:38 +01:00
Roderick van Domburg
62461be1fc
Change panics into Result<_, librespot_core::Error> 2021-12-26 21:18:42 +01:00
Roderick van Domburg
2f7b9863d9
Implement CDN for audio files 2021-12-16 22:42:37 +01:00
Roderick van Domburg
9a31aa0362
Pretty-print trace messages 2021-12-11 20:45:08 +01:00
Roderick van Domburg
e748d543e9
Check availability from the catalogue attribute 2021-12-11 20:22:44 +01:00
Roderick van Domburg
40163754bb
Update protobufs to 1.1.73.517 2021-12-10 20:33:43 +01:00
Roderick van Domburg
9b2ca1442e
Move FileId out of SpotifyId 2021-12-08 19:53:45 +01:00
Roderick van Domburg
f03a7e95c1
Merge remote-tracking branch 'librespot-org/dev' into new-api-wip 2021-12-08 19:11:53 +01:00
Roderick van Domburg
87f6a78d3e
Fix examples 2021-12-07 23:52:34 +01:00
Roderick van Domburg
0e2686863a
Major metadata refactoring and enhancement
* Expose all fields of recent protobufs

 * Add support for user-scoped playlists, user root playlists and
   playlist annotations

 * Convert messages with the Rust type system

 * Attempt to adhere to embargos (tracks and episodes scheduled for
   future release)

 * Return `Result`s with meaningful errors instead of panicking on
   `unwrap`s

 * Add foundation for future playlist editing

 * Up version in connection handshake to get all version-gated features
2021-12-07 23:22:24 +01:00
Roderick van Domburg
f037a42908
Migrate and expand playlist protos 2021-11-27 11:59:22 +01:00
Roderick van Domburg
d19fd24074
Add spclient and HTTPS support
* Change metadata to use spclient
 * Add support for HTTPS proxies
 * Start purging unwraps and using Result instead
2021-11-26 23:28:37 +01:00
Roderick van Domburg
0e6b1ba9dc
Update version numbers to 0.3.1 2021-10-24 20:12:33 +02:00
Sasha Hilton
6a3377402a Update version numbers to 0.3.0 2021-10-13 15:10:18 +01:00
Matias
7401d6a96e
Don't panic on local files (#846)
Skip tracks whose Spotify ID can't be found
2021-09-20 19:20:44 +02:00
Roderick van Domburg
b016b69772
Fix clippy warnings 2021-09-01 21:25:32 +02:00
Roderick van Domburg
9082ffa308
Merge branch 'new-api' into new-api-client 2021-06-25 22:39:21 +02:00
Roderick van Domburg
0703630041
Use PacketType instead of hex identifiers 2021-06-22 23:57:38 +02:00
Roderick van Domburg
113ac94c07
Update protobufs (#796)
* Import Spotify 1.1.61.583 (Windows) protobufs
* Import Spotify 1.1.33.569 protobufs missing in 1.1.61.583
* Remove unused protobufs, no longer present in 1.1.61.583
2021-06-19 22:29:48 +02:00
johannesd3
041f084d7f Fix warnings 2021-05-13 22:42:55 +02:00
johannesd3
1c62af9160
Unpin protobuf version 2021-05-08 22:09:37 +02:00
Sasha Hilton
2ef3928691 Update version numbers to 0.2.0 2021-05-04 13:05:13 +01:00
johannesd3
059b9029de Remove redundant field names 2021-03-10 22:41:46 +01:00
Evan Cameron
6a33eb4efa
minor cleanup 2021-02-28 21:54:19 -05:00
johannesd3
a6ed6857d2 Clean up dependencies in librespot-metadata
* Replaced LinearMap by HashMap
* Removed unnecessary dependencies
* Removed "extern crate"s
2021-02-23 22:22:52 +01:00
johannesd3
678d1777fd Merge branch 'dev' into tokio_migration 2021-02-23 22:22:49 +01:00
Sasha Hilton
d8c1b491c4 Merge branch 'master' into dev 2021-02-22 00:57:45 +00:00
Sasha Hilton
b7c3609c7b Update version numbers to 0.1.6 2021-02-22 00:37:28 +00:00
Sasha Hilton
7f705ed148 Merge branch 'master' into dev 2021-02-20 23:31:04 +00:00
Sasha Hilton
2c110ca256 Update version numbers to 0.1.5 2021-02-20 23:05:56 +00:00
johannesd3
424ba3ae25 Migrated metadata crate to futures 0.3 2021-01-25 09:04:33 +01:00
Lyndon Brown
4708e0a2bf cargo toml formatting fix
for consistency
2020-11-26 19:31:51 +00:00
Lyndon Brown
f87cbd6fde add missing repo links to sub-crate cargo toml files
such that links are available from their crates.io pages to the project repo.
2020-11-26 19:30:37 +00:00
Sasha Hilton
45f4276d68 Update version numbers to 0.1.3 2020-07-29 16:23:41 +01:00
Sasha Hilton
68949da7c2 Update version numbers to 0.1.2 2020-07-22 16:53:52 +01:00
Ash
72437bff66
Bump protobuf v2.8.1 -> v~2.14.0 and fix build issues (#485) 2020-07-22 12:47:25 +02:00
Konstantin Seiler
5784b4652c Prepare for gapless play.
- change communication between player and spirc to use player events channel.
- enhance player events channel
- have spirc send loading messages to Spotify
- enable preloading of tracks in the player
2020-02-01 08:41:11 +11:00
Sasha Hilton
6daa2acd0a Update version numbers to 0.1.1 2020-01-30 02:39:41 +01:00
marcelbuesing
c9147d31ab
Turn child crates into rust 2018 edition 2020-01-17 20:54:05 +01:00
marcelbuesing
38d82f2dc2
Rerun rustfmt on full codebase 2020-01-17 18:47:30 +01:00
ashthespy
d26590afc5
Update to Rust 2018
- Fix deprecated Error::cause warnings and missing dyn
- Reset max_width
- Add rustfmt to Travis
- Run rustfmt on full codebase
 with `cargo fmt --all`
- Add rustfmt to Travis
- Complete migration to edition 2018
- Replace try! shorthand
- Use explicit `dyn Trait`
2020-01-17 18:11:52 +01:00
henenq
3b5f9ac64c Rebase, fix broken things 2019-12-16 12:47:52 +01:00
henenq
5d2897f6f6 Fixing merge requests 2019-12-16 11:56:34 +01:00
HEnquist
4f0033e81c Various changes following review 2019-12-16 11:38:46 +01:00
Henrik Enquist
6d8a53e888 Remove forgotten println 2019-12-16 09:57:59 +01:00
HEnquist
65d07579ec Make standard metadata get handle also playlists 2019-12-16 09:57:59 +01:00
HEnquist
c7c24951d9 Remove unused code from metadata lib 2019-12-16 09:57:59 +01:00
HEnquist
e6295a6f9c Use new hm endpoint for playlists 2019-12-16 09:57:59 +01:00
HEnquist
9faaaae6d2 Add basic support for playlists 2019-12-16 09:57:59 +01:00
HEnquist
eb9ab4885f Make standard metadata get handle also playlists 2019-12-16 09:57:59 +01:00
HEnquist
d72eb38d62 Remove unused code from metadata lib 2019-12-16 09:51:43 +01:00
HEnquist
d8fda8f79c Use new hm endpoint for playlists 2019-12-16 09:51:43 +01:00
HEnquist
5b26529811 Add basic support for playlists 2019-12-16 09:51:43 +01:00
Sasha Hilton
4e1bf7a0db Add version numbers for all librespot crates 2019-11-06 16:59:40 +01:00
Sasha Hilton
394320c7b7 Add description and license to Cargo.toml for each crate 2019-11-06 16:50:26 +01:00
ashthespy
b96405af82 Make SpotifyId understand more URI formats 2019-10-30 11:33:17 +01:00
ashthespy
8eb51e9b55 Streamline and refactor Podcast support,
<Metadata>
  Add publisher to `Show`
  Add `ALLOWED` to `PassthroughEnum`
2019-10-30 11:33:17 +01:00
ashthespy
0cb7a3f7c8 WIP: Podcast support 2019-10-30 11:33:17 +01:00
Nick Mavis
c19375c5ca Fixed nightly conflict with 2019-09-16 15:00:09 -04:00
Tristan Stenner
1ba6e5886a Restrict protobuf updates 2019-07-30 11:00:02 +02:00
George Hahn
6e280b3c88 Upgrade dependencies 2019-07-17 22:08:15 -05:00
ashthespy
c5fcdfd43c Upgrade protobuf to 2.0 and use protoc-rust to compile proto files 2018-10-03 15:06:44 +02:00
Harold
00e89343fb Formatting 2018-07-03 13:08:42 +02:00
Sasha Hilton
4fb8c71b0a Set SpotifyId methods to return Result 2018-02-25 03:04:07 +01:00
awiouy
a427c8316b metadata.rs is empty 2018-02-13 08:34:52 +01:00
awiouy
edbe00c62b core API: move StrChunks* to metadata 2018-02-13 08:33:50 +01:00
awiouy
4c2b641cad core API: move spotify_id to lib.rs 2018-02-13 07:57:28 +01:00
ashthespy
4164717452 Add track duration to Track metadata 2018-02-06 03:20:21 +01:00
Thomas Bächler
5237203899 Remove usage of deprecated BoxFuture, BoxStream and BoxSink 2018-01-25 23:23:45 +01:00
Jakob
030b318a9c fix crash for artists without tracks (closes #103) (#256) 2017-10-01 05:15:19 +03:00
Paul Lietar
ec8f80df75 Create new librespot-audio crate 2017-08-03 20:37:04 +01:00
Paul Lietar
a51b562487 Create new librespot-metadata crate 2017-08-03 20:11:17 +01:00