Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ramsayleung/rspotify
Spotify Web API SDK implemented on Rust
https://github.com/ramsayleung/rspotify
crates fun music rust sdk spotify spotify-web-api
Last synced: 8 days ago
JSON representation
Spotify Web API SDK implemented on Rust
- Host: GitHub
- URL: https://github.com/ramsayleung/rspotify
- Owner: ramsayleung
- License: mit
- Created: 2018-01-12T13:13:53.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-09-30T06:00:31.000Z (about 1 month ago)
- Last Synced: 2024-10-16T04:12:45.125Z (29 days ago)
- Topics: crates, fun, music, rust, sdk, spotify, spotify-web-api
- Language: Rust
- Homepage:
- Size: 4.79 MB
- Stars: 640
- Watchers: 5
- Forks: 122
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![Continuous Integration](https://github.com/ramsayleung/rspotify/workflows/Continuous%20Integration/badge.svg)](https://github.com/ramsayleung/rspotify/actions)
[![License](https://img.shields.io/github/license/ramsayleung/rspotify)](https://github.com/ramsayleung/rspotify/blob/master/LICENSE)
[![Crates.io](https://img.shields.io/crates/v/rspotify.svg)](https://crates.io/crates/rspotify)
[![Docs](https://docs.rs/rspotify/badge.svg)](https://docs.rs/crate/rspotify/)# RSpotify
![](./doc/images/rspotify_logo_with_name.png)RSpotify is a wrapper for the [Spotify Web API](https://developer.spotify.com/documentation/web-api/), inspired by [spotipy](https://github.com/plamere/spotipy). It includes support for all the [authorization flows](https://developer.spotify.com/documentation/general/guides/authorization/), and helper functions for [all endpoints](https://developer.spotify.com/documentation/web-api/reference/).
To learn how to use RSpotify, please refer to the [documentation](https://docs.rs/crate/rspotify/). There are some [examples that may be useful](./examples) as well.
## Changelog
Please see the [changelog](./CHANGELOG.md) for a release history and indications on how to upgrade from one version to another.
## Contributing
If you find any problems or have suggestions about this crate, please submit an issue. Moreover, any pull request, code review and feedback are welcome.
### Code Guide
We use GitHub Actions to make sure the codebase is consistent (`cargo fmt`) and continuously tested (`cargo test`). We try to keep comments at a maximum of 80 characters of length (which isn't automatically checked by `cargo fmt`) and code at 120.
### Trait Hierarchy
![](./doc/images/trait_hierarchy.png)
### Crate Hierarchy
![](./doc/images/crate_hierarchy.png)
## Building
RSpotify uses [`maybe_async`](https://docs.rs/maybe-async/0.2.0/maybe_async/) to switch between async and blocking clients, which is triggered inside `Cargo.toml`. So that must be taken into account when building `rspotify`. Read the Configuration section in the docs for more information about how to build with custom TLS implementations, and more.
`client-reqwest` is used by default. It should be as easy as
```sh
$ cargo build
````client-ureq` is also available as the `blocking` interface, which compiles RSpotify with [`ureq`](https://docs.rs/ureq/) (a TLS has to be specified as well):
```sh
$ cargo build --no-default-features --features client-ureq,ureq-rustls-tls
```Notice that you can't build `rspotify` with all features like this:
```sh
$ cargo build --all-features
```Because in order to switch between clients, the different clients have to implement the same base trait in [src/http/mod.rs](https://github.com/ramsayleung/rspotify/blob/master/src/http/mod.rs), so if you build with all features, you'll get `duplicate definitions` error. As every coin has two sides, you can only have one side at a time, not all sides of it.
## WASM support
RSpotify supports building for the `wasm32-unknown-unknown` target. It should be as easy as:
```sh
$ cargo build --target wasm32-unknown-unknown
```Refer to the [documentation](https://docs.rs/rspotify/latest/rspotify/#webassembly) for more details
## License
[MIT](./LICENSE)