{"id":13580557,"url":"https://github.com/ramsayleung/rspotify","last_synced_at":"2025-08-31T15:24:06.142Z","repository":{"id":29413142,"uuid":"117242846","full_name":"ramsayleung/rspotify","owner":"ramsayleung","description":"Spotify Web API SDK implemented on Rust","archived":false,"fork":false,"pushed_at":"2025-03-18T21:10:41.000Z","size":5135,"stargazers_count":661,"open_issues_count":26,"forks_count":123,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-29T13:53:27.229Z","etag":null,"topics":["crates","fun","music","rust","sdk","spotify","spotify-web-api"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ramsayleung.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-12T13:13:53.000Z","updated_at":"2025-03-27T06:53:51.000Z","dependencies_parsed_at":"2023-02-19T09:01:35.308Z","dependency_job_id":"48ac0bfe-aeab-4909-aac0-0a59c70c0622","html_url":"https://github.com/ramsayleung/rspotify","commit_stats":{"total_commits":1397,"total_committers":61,"mean_commits":"22.901639344262296","dds":0.6012884753042234,"last_synced_commit":"b92316eb2af49832126626d631d83fedcc71ef3c"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ramsayleung%2Frspotify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ramsayleung%2Frspotify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ramsayleung%2Frspotify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ramsayleung%2Frspotify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ramsayleung","download_url":"https://codeload.github.com/ramsayleung/rspotify/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247426112,"owners_count":20937067,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crates","fun","music","rust","sdk","spotify","spotify-web-api"],"created_at":"2024-08-01T15:01:53.031Z","updated_at":"2025-04-06T02:31:52.276Z","avatar_url":"https://github.com/ramsayleung.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"[![Continuous Integration](https://github.com/ramsayleung/rspotify/workflows/Continuous%20Integration/badge.svg)](https://github.com/ramsayleung/rspotify/actions)\n[![License](https://img.shields.io/github/license/ramsayleung/rspotify)](https://github.com/ramsayleung/rspotify/blob/master/LICENSE)\n[![Crates.io](https://img.shields.io/crates/v/rspotify.svg)](https://crates.io/crates/rspotify)\n[![Docs](https://docs.rs/rspotify/badge.svg)](https://docs.rs/crate/rspotify/)\n\n# RSpotify\n![](./doc/images/rspotify_logo_with_name.png)\n\nRSpotify 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/).\n\nTo 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.\n\n## Changelog\n\nPlease see the [changelog](./CHANGELOG.md) for a release history and indications on how to upgrade from one version to another.\n\n## Contributing\n\nIf you find any problems or have suggestions about this crate, please submit an issue. Moreover, any pull request, code review and feedback are welcome.\n\n### Code Guide\n\nWe 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.\n\n### Trait Hierarchy\n\n![](./doc/images/trait_hierarchy.png)\n\n### Crate Hierarchy\n\n![](./doc/images/crate_hierarchy.png)\n\n## Building\n\nRSpotify 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.\n\n`client-reqwest` is used by default. It should be as easy as\n\n```sh\n$ cargo build\n```\n\n`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):\n\n```sh\n$ cargo build --no-default-features --features client-ureq,ureq-rustls-tls\n```\n\nNotice that you can't build `rspotify` with all features like this:\n\n```sh\n$ cargo build --all-features\n```\n\nBecause 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.\n\n## WASM support\n\nRSpotify supports building for the `wasm32-unknown-unknown` target. It should be as easy as:\n\n```sh\n$ cargo build --target wasm32-unknown-unknown\n```\n\nRefer to the [documentation](https://docs.rs/rspotify/latest/rspotify/#webassembly) for more details\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framsayleung%2Frspotify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Framsayleung%2Frspotify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framsayleung%2Frspotify/lists"}