Description
Crystalize is a Crystal shard that adds support for the Spotify API. It is usable, but doesn't cover most of the API and may not have a stable interface.
Crystalize alternatives and similar shards
Based on the "Third-party APIs" category.
Alternatively, view Crystalize alternatives based on common mentions on social networks and blogs.
-
GDAX
📈 GDAX REST and WebSocket API wrapper to trade blockchain cryptocurrencies like bitcoin, Litecoin and Ethereum.
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of Crystalize or a related project?
README
Crystalize is a Crystal library that adds support for the Spotify API.
Crystalize is still a WIP. It is usable, but doesn't cover all of the API and may not have a stable interface.
Installation
- Add the dependency to your
shard.yml
:
dependencies:
crystalize:
github: t1ra/crystalize
- Run
shards install
Usage
require "crystalize"
Documentation
To use Crystalize, you first have to set credentials:
Crystalize.authenticate(id: "your-id", secret: "your-secret")
To get an ID and secret, create a new client using the Spotify Dashboard.
From there, you can send requests via the associated module:
album = Crystalize::Album.get("3ogb5zqMrLtSbT4HAvQhPc").not_nil!
album.name.should eq "Твой первый диск - моя кассета"
album.artists.first.name.should eq "Tima Belorusskih"
Crystalize's API can be found at https://t1ra.github.io/crystalize, and Spotify's API reference can be found at https://developer.spotify.com/documentation/web-api/reference/. Using these, it shouldn't be difficult to thoroughly understand Crystalize.
Coverage
- Albums ✅
- Artists ✅
- Browse ✅
- Tracks ✅
Coming Soon
- Playlists (Partial?)
- Users Profile (Partial?)
Long-Term Goals
- Follow
- Personalization
- Player
- Search
Why the long-term goals?
The long-term goal endpoints require authentication from a user, which, generally, requires a lot more setup to get than bot authentication. Until all of the bot-available endpoints are ready, there's no plan to implement user-based endpoints.
Users Profile can be partially implemented because some endpoints require user authentication
(/v1/me
), while others (/v1/users/{user_id}
) don't.
Contributing
- Fork it (https://github.com/t1ra/crystalize/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
)- If you're fixing a bug, confirm your changes fix the issue and ensure the
library passes
crystal spec
- If you're adding a feature, write a new test. In the case of a new endpoint, make sure that the test at least ensures the endpoint is demarshalled correctly.
- If you're fixing a bug, confirm your changes fix the issue and ensure the
library passes
- Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Testing
If you simply pull the repo and run crystal spec
, tests will fail because Crystalize doesn't
have any credentials to use. To add your own, create spec/auth.cr
and add the following:
module Auth
@@id = "YOUR-ID"
@@secret = "YOUR-SECRET"
def self.id
@@id
end
def self.secret
@@secret
end
end
Replacing @@id
and @@secret
with your own.