Spoty provides simple REST API endpoints to query the current playing track on Spotify.
-
Download the corresponding binary for your operating system and architecture from the releases page.
-
Create a Spotify application here.
Take note of the
Client ID
andClient Secret
for use in the next step. -
Setup the proper environment variables (Check the configuration section for references)
Example from .env.dist:
SERVICE_NAME=spoty PROD=false SPOTIFY_CLIENT_ID=111fedce236f4d34a607711a7ac4a606 SPOTIFY_CLIENT_SECRET=fb4d98819b912dfd90d5803bb668ad24 HTTP_SERVER_HOST=localhost HTTP_SERVER_PORT=13337 CACHE_MAX_KEYS=64 CACHE_MAX_COST=1000000 JAEGER_ENDPOINT=http://localhost:14268/api/traces AMQP_URI=amqp://guest:guest@localhost:5672
-
Edit the
Redirect URIs
setting of your Spotify application to match the environment variables:Example:
http://<HOST>:<PORT>/api/callback
-
Run the service:
$ ./spoty serve
You can also run the service in production mode by setting the
PROD
environment variable totrue
. -
Authenticate against Spotify by heading to
/api/authenticate
route. You should be redirected to the Spotify login page if you not already logged in on Spotify. After logging in, you should be redirected back to the service with the following success message:{ "message": "welcome, you are now authenticated!" }
-
Head to the
/api
(health-check) route and expect a similar json response with a HTTP status code200
:Example:
{ "status": "up", "details": { "spoty": { "status": "up", "timestamp": "2022-03-31T08:10:31.534317878Z" } } }
Consult the swagger ui page at the /swagger/index.html
route:
Example:
http://<HOST>:<PORT>/swagger/index.html
ENV | Description | Required | Default |
---|---|---|---|
SERVICE_NAME | Name of microservice | No | spoty |
PROD | Whether running in PROD or DEBUG mode |
No | false |
SPOTIFY_CLIENT_ID | Client ID of app created on Spotify |
Yes | empty |
SPOTIFY_CLIENT_SECRET | Client Secret of app created on Spotify |
Yes | empty |
HTTP_SERVER_HOST | Host/IP for HTTP server | No | localhost |
HTTP_SERVER_PORT | Port for HTTP server | No | 13337 |
CACHE_MAX_KEYS | Maximum number of keys for cache | No | 64 |
CACHE_MAX_COST | Maximum size of cache (in bytes) | No | 1000000 |
JAEGER_ENDPOINT | Jaeger collector endpoint | No | http://localhost:14268/api/traces |
AMQP_URI | AMQP 0-9-1 Uniform Resource Identifier | No | amqp://guest:guest@localhost:5672 |
This project was inspired by arwinneil/spotify_chroma and was initially coded in a similar regard as the latter: a fun PoC. However, this project will be maintained until it is deemed feature complete and bug free by the author/maintainer(s) 😊
This project follows SemVer strictly and is considered STABLE.
This project follows the Go Release Policy. Each major version of Go is supported until there are two newer major releases.