#spotify #info #metadata #websockets

spotify_info

Gets metadata from spotify using a spicetify extension using websockets

8 releases (4 breaking)

Uses new Rust 2021

0.5.0 Apr 3, 2022
0.4.0 Apr 1, 2022
0.3.0 Dec 23, 2021
0.2.2 Dec 23, 2021
0.1.1 Dec 21, 2021

#91 in WebSocket

Download history 19/week @ 2022-03-13 20/week @ 2022-03-20 18/week @ 2022-03-27 38/week @ 2022-04-03 4/week @ 2022-04-10 3/week @ 2022-04-17 28/week @ 2022-04-24 50/week @ 2022-05-01 51/week @ 2022-05-08 138/week @ 2022-05-15 37/week @ 2022-05-22 54/week @ 2022-05-29 41/week @ 2022-06-05 2/week @ 2022-06-12 7/week @ 2022-06-19 10/week @ 2022-06-26

76 downloads per month

MIT license

12KB
135 lines

crates.io docs.rs license

Spotify Info

Gets metadata from spotify using a spicetify extension using websockets

I made this mainly for my audio visualizer to have song info display along with it since Windows doesn't offer anyway to do this, on Linux I could use MPRIS, for macOS no idea I don't use it

This will work for all desktop platforms (Windows, Linux, macOS)

API Usage

Examples can be found in the examples directory

use spotify_info::{SpotifyEvent, TrackListener};

#[tokio::main]
async fn main() {
  // Create listener
  let listener = TrackListener::bind_default().await.unwrap();

  // Listen for incoming connections, if spotify closes, the loop keeps listening
  while let Ok(mut connection) = listener.get_connection().await {
    while let Some(Ok(event)) = connection.next().await {
      match event {
        // Gets called when user changed track
        SpotifyEvent::TrackChanged(info) => println!("Changed track to {}", info.title),
        // Gets called when user changes state (if song is playing, paused or stopped)
        SpotifyEvent::StateChanged(state) => println!("Changed state to {}", state),
        // Gets called on a set interval, wont get called if player is paused or stopped,
        // Value is a percentage of the position between 0 and 1
        SpotifyEvent::ProgressChanged(time) => println!("Changed progress to {}", time)
      }
    }
  }
}

Use API

Add this to your Cargo.toml dependencies

spotify_info = "0.5"

Plans

  • Improve Documentation
  • Make instructions easy to understand for regular users
  • When the track was created
  • What playlist the track is in

Install/Uninstall Spicetify Extension

Auto Install

Run script to install, uninstall by running it again

Windows

Open PowerShell (Win + S) type powershell and press enter and run this command

Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/Ricky12Awesome/spotify_info/main/extension/install_extension.ps1" | Invoke-Expression

Linux / macOS

Open Terminal (usually Ctrl + Alt + T on linux) and run this command

curl https://raw.githubusercontent.com/Ricky12Awesome/spotify_info/main/extension/install_extension.sh | sh

Manual

You can get the extension from here (right-click -> save as)

Place that file to %userprofile%\.spicetify\Extensions\ on Windows or ~/.config/spicetify/Extensions on Linux / macOS

Install

Run command spicetify config extensions spotify_info.js && spicetify apply from the terminal to install the plugin

Uninstall

Run command spicetify config extensions spotify_info.js- && spicetify apply from the terminal to uninstall the plugin

More details about install extensions https://spicetify.app/docs/getting-started/extensions

Dependencies

~6–13MB
~245K SLoC