A really easy way to display your spotify listening status on spotify.

Overview

Spotify playing README

A really easy way to display your spotify listening status on READMEs and Websites too!

Demo

Here's the embed from the site.

Spotify playing

Customized card, with theming

Spotify playing

Security notice

NOTE: As a security notice, We declare that, we're not storing 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.

URL Parameters

  • 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

  • Go to the developer panel at spotify. Panel URL
  • Make an APP, Specify the name, and description.
  • Add http://localhost:5000/callback to the URLs
  • Take a note of the Client ID, and Client Secret for setting up .env

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 account tab, 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.

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 variables

  • BASE_URL: This is the basic URL for local dev, set it to localhost:5000
  • 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 Realtime Database section.
  • 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.

Once done, Run the server using pipenv run start! It should boot up at localhost:5000! Enjoy!

TODOs Planned

There are several things planned for this project. Here are the TODOs, Kept public for reference, and transparent-ness.

  • FAQ
    • How to contribute
    • How to add a theme
    • How to work with options
    • Adding more features
    • Customization
  • Improve the current themes
  • Add more themes
  • Add more customization options
    • Previews when customizing the card
    • Allow customizing Background and font color ( Will be redeveloped, with all security issues fixed )
    • Marquee show
    • Display bars when not listening.
    • Allow linking to your profile along with the link.
    • Color Theme
    • Abiltiy to Hide status
    • HTML Image tag generation
    • Add same color to either of the text / title, if either of them is left empty, so the color pallet is fine.

🤝 Contributing

Contributions, issues and feature requests are welcome. After cloning & setting up project locally, you can just submit a PR to this repo and it will be deployed once it's accepted.

⚠️ It’s good to have descriptive commit messages, or PR titles so that other contributors can understand about your commit or the PR Created. Read conventional commits before making the commit message.

💬 Get in touch

If you have various suggestions, questions or want to discuss things wit our community, Join our discord server!

Discord

Show your support

We love people's support in growing and improving. Be sure to leave a ⭐️ if you like the project and also be sure to contribute, if you're interested!

Inspired by Novatorem

Made by Sunrit Jana with ❤️
You might also like...
An interactive App to play with Spotify data, both from the Spotify Web API and from CSV datasets.

An interactive App to play with Spotify data, both from the Spotify Web API and from CSV datasets.

Easy way to use Telegram bot to hide your identity.

telegram-support-bot Easy way to use Telegram bot to hide your identity. Useful for support, anonymous channel management. Free clone of Livegram Bot.

A code to match you with the perfect Taylor Swift song for your mood and relationship status.

taylorswift A package for matching your current mood and relationship status to a suitable Taylor Swift song. Requirements: Python 2 or 3, and the num

Telegram bot that search for the classrooms status of the chosen day and then return all the free classrooms using your preferred time slot
Telegram bot that search for the classrooms status of the chosen day and then return all the free classrooms using your preferred time slot

Aule Libere Polimi Since the PoliMi site no longer allows people to search for free classrooms this bot was necessary! It simply search for the classr

Automatically changes your discord status

Automatically changes your discord status, Be careful as this may get you rate limited and banned

Connect your Nintendo Switch playing status to Discord!
Connect your Nintendo Switch playing status to Discord!

Disclaimer: Unfortunately, it appears that Nintendo has removed returning self-Presence in their API as of recently, making this project near obsolete

⚡ A really fast and powerful Discord Token Checker

discord-token-checker ⚡ A really fast and powerful Discord Token Checker How To Use? Do pip install -r requirements.txt in your command prompt Make to

Python linting made easy. Also a casual yet honorific way to address individuals who have entered an organization prior to you.
Python linting made easy. Also a casual yet honorific way to address individuals who have entered an organization prior to you.

pysen What is pysen? pysen aims to provide a unified platform to configure and run day-to-day development tools. We envision the following scenarios i

Manage AWS Secrets the easy way

AWStanding Easily load variables from AWS Parameter store into environment variables. Why to AWStanding? Because it handles AWS pagination so the amou

Comments
  • Question regarding svg load Firefox for similar implementation

    Question regarding svg load Firefox for similar implementation

    I've had this weird, weird bug and I thought I'd bring it up as I can't find any details about it anywhere else.

    I've forked your repo and made some simplifications/style edits. But perhaps somewhere along the way, I made a change I shouldn't have (?). I'm currently experiencing an odd bug where the cover of the base64 encoded cover art will only load when the mouse hovers over it.

    When this happens it appears instantly, suggesting this isn't an issue with the resource being loaded on the page but something about how the svg is rendered on the page. I only experience this issue with Firefox and I can't always reproduce it. My gut tells me it might be something to do with the Vercel instance going dormant when it's not been activated in a while and so the svg isn't loaded at once with the cover image?

    Here is a short little screen recording so you can get the idea.

    https://user-images.githubusercontent.com/54308792/176357506-7731b2da-d857-4dc0-b5f1-1345d76157a0.mov

    opened by jacksongoode 2
  • Bump protobuf from 3.19.4 to 3.19.5

    Bump protobuf from 3.19.4 to 3.19.5

    Bumps protobuf from 3.19.4 to 3.19.5.

    Release notes

    Sourced from protobuf's releases.

    Protocol Buffers v3.19.5

    C++

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Updated the code to use navigator.clipboard and added an icon

    Updated the code to use navigator.clipboard and added an icon

    Added an icon to the copy button by Heroicons. image

    And used the latest code using navigator.clipboard instead of document.execCommand. Using execCommand as a fallback if clipboard is not in navigator.

    opened by max-programming 1
  • Complete app rewrite.

    Complete app rewrite.

    Following changes are being done:

    • [x] Move to supabase for the database
    • [x] Use tailwind and vanilla JS instead of Bulma & JQuery.
    • [x] Optimize and clean up the codebase
    • [x] Add support for top tracks
    • [x] Remove unnecessary parameters and keep the image generation simple
    • [x] Make the routes more descriptive.
    • [ ] Add top tracks SVG display
    • [ ] Add top artists SVG display
    • [ ] Add an error SVG in case a feature is used whose scope hasn't been used to make the user aware.
    • [ ] Complete rewriting the dashboard for SVG generation (different from 1st generation)
    • [x] Expose the Song playing/Recently played, Top tracks and Top artists as an endpoint.
    • [ ] Dockerize the app to make the self-hosting workflow much simpler.

    Following routes are decided:

    • /image/listening-to - for displaying the currently playing/recently played songs (or podcasts)
    • /image/top-tracks - for displaying the top tracks listened to
    • /auth/login - Login page
    • /dashboard - The dashboard to generate the image URLs and preview
    opened by janaSunrise 0
Owner
Sunrit Jana
Already starting to fulfil my goals! In love with Machines, python and C++ and more! Life is all about ups and downs, Wins and loses. Never be disappointed.
Sunrit Jana
Spotify Top Lists - get the current top lists of a user from the Spotify API and display them in a Flask app

Spotify Top Lists This is a simple script that will get the current top lists of a user from the Spotify API and display them in a Flask app. Requirem

Yasin 0 Oct 16, 2022
Dynamic Twitter banner, to show off your spotify status. Banner updated every 5 minutes.

Spotify Twitter Banner Dynamic Twitter banner, to show off your spotify status. Banner updated every 5 minutes. Installation and Usage Install the dep

Sunrit Jana 23 Jan 5, 2023
Discord bot that displays Jazz Jackrabbit 2 server status, current gamemode as "Playing.." status

JJ2-server-status-discord-bot Discord bot that displays Jazz Jackrabbit 2 server status, current gamemode as "Playing.." status How to setup: 0. Downl

null 2 Dec 9, 2021
A simple program to display current playing from Spotify app on your desktop

WallSpot A simple program to display current playing from Spotify app on your desktop How to Use: Linux: Currently Supports GNOME and KDE. If you want

Nannan 4 Feb 19, 2022
A Python script to create customised Spotify playlists using the JSON, Spotipy Library and Spotify Web API, based on seed tracks in your history.

A Python script to create customised Spotify playlists using the JSON, Spotipy Library and Spotify Web API, based on seed tracks in your history.

Youngseo Park 1 Feb 1, 2022
A simple waybar module to display the status of the ICE you are currently in using the ICE Portals JSON API.

waybar-iceportal A simple waybar module to display the status of the ICE you are currently in using the ICE Portals JSON API. Installation Ensure pyth

Moritz 7 Aug 26, 2022
Changes the Telegram bio, profile picture, first and last name to the song that the user is currently listening to.

TGBIOFY - Telegram & Spotify integration Changes the Telegram bio, profile picture, first and last name to the song that the user is currently listeni

elpideus 26 Dec 7, 2022
Easy & powerful bot to check if your all Telegram bots are working or not. This bot status bot updates every 45 minutes & runs for 24x7 hours.

PowerfulBotStatus-IDN-C-X Easy & powerful bot to check if your all Telegram bots are working or not. This bot status bot updates every 45 minutes & ru

IDNCoderX 5 Oct 6, 2022
Check your bot status automatically using userbot, simply and easy

Status Checker Userbot check your bot status automatically using userbot, simply and easy. Mandatory Vars API_ID : Telegram API_ID, get it from my.tel

ALBY 6 Feb 20, 2022
Script for polybar to display and control media(not only Spotify) using DBus.

polybar-now-playing Script for polybar to display and control media(not only Spotify) using DBus Python script to display and control current playing

Dope Wizard 48 Dec 31, 2022