Skip to main content

Slack integration with Spotify that shows the currently playing song in the user's status

Project description

SlackFM

PyPI - Version PyPI - Python

SlackFM is a lightweight library that updates your Slack status with the song you're currently playing on Spotify.

It features:

  • Zero dependencies.
  • Service creation and management using systemctl.
  • Various commands to use SlackFM.
  • Flags and configuration file to control the program's behavior.
  • Automatic token refreshing for Spotify.

Credentials

Credentials are needed to connect to the Slack workspace and get permission from the Spotify user account. Here is a quick guide on how I got them:

Slack

  1. Go to https://api.slack.com/apps
  2. Click on Create an App -> From scratch
  3. Fill the App Name and Pick a workspace to develop your app in inputs
  4. OAuth & Permissions
  • Scopes -> User Token Scopes
    • users:read
    • users:write
    • users.profile:read
    • users.profile:write
  • OAuth Tokens -> Install to [Your workspace name]
  1. Click on Allow
  2. You can get the token back at the OAuth Tokens section.

Spotify

  1. Go to https://developer.spotify.com/dashboard -> Accept the terms
  2. Create app
  • Fill App name and App description
  • Write http://127.0.0.1:8888/callback in Redirect URIs
  • Tick the Web API box
  1. Accept the terms and click on Save
  2. The next screen will contain both the Client ID and Client Secret.

How to use

Although slackfm has no dependencies, it requires your system to be Linux or macOS to run the following commands:

  • init
  • status
  • start
  • stop
  • reset

This is because they require systemctl to run slackfm as a process.

play

Initializes slackfm in the current shell session.

It accepts the following flags:

  • album: displays the song's album title (if it's not a single)
  • progress: displays the current progress through the song
  • cover: temporarily sets your profile picture to the song's cover

init

Creates the following files:

  • /usr/lib/systemd/system/slackfm.service: the Slackfm service itself.
    It is used through ./slackfm.py start and ./slackfm.py stop. Also reloads the all unit files by running sudo systemctl daemon-reload.

  • ~/.config/slackfm/slackfm.conf: contains the service's configuration.
    It it changes, the service has to stop so the changes are applied. The allowed values are the same as the play flags.

album=true
progress=false
cover=true
  • ~/.config/slackfm/slackfm.env: contains the previously mentioned credentials.
SLACK_TOKEN=your-slack-token
SPOTIFY_CLIENT_ID=your-spotify-client-id
SPOTIFY_CLIENT_SECRET=your-spotify-client-secret

status

Runs systemctl is-active slackfm.service.

start

Runs sudo systemctl start slackfm.service, which is the same as calling ./slackfm.py play but from a service. Arguments will be read from ~/.config/slackfm/slackfm.conf.

stop

Runs sudo systemctl stop slackfm.service.

reset

Runs sudo systemctl stop slackfm.service, then sudo systemctl start slackfm.service.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

slackfm-0.1.0-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file slackfm-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: slackfm-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for slackfm-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 40eba928142891e851df819997b1542d03d08250924c52ee41276d31930effef
MD5 b94d6240f183bae62942294af79d09b5
BLAKE2b-256 edd3e904951ba4f121a5cf38c82bff030f51b1c452de5b2e3bf9f4ff44d99eca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page