Spotify playing README
A really easy way to display your spotify listening status on READMEs and Websites too!
Here's the embed of Card from the site.
Customized card, with theming
As a security notice, We're not storing any of the sensitive tokens, We just store the
access tokens securely, used for generating temporary refresh tokens, and getting just the status data, with
only read permissions and scopes. You can check it in the configuration file for the scopes.
id: Your spotify ID
theme: The card theme
image: If cover image to be included
color_theme: The color theme for the Card
bars_when_not_listening: If bars should be shown when not listening
bg_color: The BG color for the card
title_color: The title color for the card
text_color: The text color for the card
hide_status: If the status for song should be shown.
NOTE: You can generate the card easily by visiting the panel. Check the repo description link for it.
Setting up the development environment
Install the dependencies
The project uses pipenv for dependencies. Here's how to install the dependencies.
pipenv sync -d
Setting up Spotify API for the project
- Go to the developer panel at spotify. Panel URL
- Make an APP, Specify the name, and description.
http://localhost:5000/callbackto the URLs for development. Add the respective IP / Domain / Host
if you're self hosting this App with the path of
/callbackto the end.
- Take a note of the Client ID, and Client Secret for setting up
Setting up Firebase
- Go to the firebase panel.
- Make a new project, and setup as a Web SDK and enable it.
- Go to Settings, and the web apps section, and copy the config, and keep a note.
- Then go to the
Services accounttab, then the
Database secrets, select the Database we're
using and copy the API.
- Copy the domain from Realtime Database section in left, after initializing it.
- Finally, For service accounts, Go to the
Services accounttab. Then download the service
account credentials and save it. Once done, Open VSCode, Download Base64 Encode extension,
if you don't already have it. The Copy and Paste the JSON file contents in the
Encode it using Base64 after that.
Setting up .env
Configure the environmental variables by renaming the
.env.example file to
.env with the respective
values for it.
Here's the info about the
BASE_URL: This is the basic URL for getting the Callback URLs and more, set it
localhost:5000in development mode.
SPOTIFY_CLIENT_ID: This is the spotify client ID.
SPOTIFY_SECRET_ID: This is the Spotify Secret.
FB_API_KEY: This is the API key for firebase, from Database secrets.
FB_DOMAIN: This is the domain from
FB_PROJECT_ID: This is the Project ID from normal firebase config.
FB_STORAGE_BUCKET: The storage bucket from the normal firebase config.
FB_MESSAGING_ID: The messaging ID from normal firebase config.
FB_DATABASE_URL: The database URL from firebase config.
FB_SERVICE_ACCOUNT: The service account credentials obtained from the settings and encoded using base64.
NOTE: Use the VSCode Base64 encode extension to encode the contents of the Service Account JSON file.
You can change the port when self hosting / running by adding a
port parameter to
function. You can do so like this
Once done, Run the server using
pipenv run start. It should boot up at
localhost:5000 in development mode,
or the settings you have provided.
Deploying your own instance
To deploy your own instance, You need a proper hosting platform to run Python webapps.
You can use Heroku, PythonAnywhere, Your own server or anywhere else.
To self-host your instance, The steps are given above on how to do it. The instructions on
option configuration is also given. It is recommended to run with Debug mode off, and Your
specific host and port.
You can do so, like this:
- Turn debug off, by toggling the Debug option to
- Change host and port:
flask.run(debug=DEBUG, host="<your-host>", port=<your-port>)by replacing
the values given inside the angle brackets.
Here is the workflow on setting up:
- Setup Spotify API and note it.
- Setup Firebase for data store and note the API.
- Fill the values as said in
- Configure the options as needed.
- Install dependencies using
- Run using
pipenv run start.
- And, you should be good to go.
Note: You can use the self hosted instance already running, or Self host your own instance like this.
There are several things planned for this project. Here are the TODOs, Kept public for reference,
- [ ] FAQ
- [ ] How to contribute
- [ ] How to add a theme
- [ ] How to work with options
- [ ] Adding more features
- [ ] Customization
- [x] Improve the current themes
- [ ] Add more themes
- [x] Add more customization options
- [x] Previews when customizing the card
- [x] Allow customizing Background and font color (Will be redeveloped, with all security issues fixed)
- [x] Marquee show
- [x] Display bars when not listening.
- [x] Allow linking to your profile along with the link.
- [x] Color Theme
- [x] Abiltiy to Hide status
- [x] HTML Image tag generation
- [x] Add same color to either of the text / title, if either of them is left empty, so the color pallet is fine.