SkillAgentSearch skills...

Spotisub

Spotify to subsonic Playlist Generator and Importer

Install / Use

/learn @blastbeng/Spotisub
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Spotisub

image

Spotify to subsonic Playlist Generator and Importer

Since I haven't found an app to import my Spotify playlists, I started this project for myself, but then decided that this could be helpful for the community.

!!! WORK IN PROGRESS !!!

Note that this is a work in progress, some things may be subject to changes. Like endpoints paths.

The current release has all the base features, but it is still a work in progress, so expect bugs.

Description

Simple playlist generator based on spotify user and artists recommendations with Subsonic API support

This software will try to match all your Spotify playlists to your music library using Subsonic APIs

This generator works with Navidrome and every Subsonic API enabled media center

This is an example about what it generates using Navidrome:

image

Getting Started

For install instructions take a look at the WIKI: https://github.com/blastbeng/spotisub/wiki

Features

  • Generate 5 playlist based on your history, top tracks and saved tracks
  • Generate artist reccommendation playlists for every artist in your library
  • Generate artist top tracks playlists for every artist in your library
  • Generate playlists based on your created and followed playlists on Spotify
  • Generate playlist with all your saved tracks on Spotify
  • Optional Spotdl integration, to automate the dowload process of missing tracks from the subsonic database
  • Optional Lidarr integration, used altogether with spotdl to make decision about download a matching song or not

Take a look at Spotdl here: https://github.com/spotDL/spotify-downloader

Take a look at Lidarr here: https://github.com/Lidarr/Lidarr

When both Spotdl and Lidarr integrations are enabled, if spotisub doesn't find a song in subsonic database, it tries to search the artist returned from the spotify APIs inside the Lidarr database (via Lidarr APIs). If this artist isn't found inside the Lidarr database, the download process is skipped.

So for example if you want to automate the download process, using this system you can skip the artists you don't like.

Track Matching

The track matching is made in two different ways, by MBID comparison and simple text comparison.

For perfect track match by MBID it is important that the songs in your library have the musicBrainzId tag.

MBID

A common way to uniquely identify tracks is via an MBID. Read more about it on MBID - Musicbrainz. Spotify track data does not contain an MBID. However, it does typically contain an ISRC, a different type of unique identifier. Musicbrainz supports looking up tracks by ISRC, which is then used to get a corresponding MBID. However, the ISRC database on Musicbrainz is incomplete, so not all tracks will have an ISRC value. There are tools and guides for submitting missing ISRC values, which will benefit everyone who wants to use the Musicbrainz API.

The MBID is stored in your Subsonic library tracks via the musicBrainzId tag.

If the MBID comparison succeeds, the song will be added to the playlist and the text comparison will be skipped.

Simple Text Comparison (OFF by default)

When the two MBIDs doesn't match, a text comparison will optionally be executed between the Spotify song and your Subsonic library.

In case of successful compare, the song will be added to the playlist.

Word Exclusions

Spotisub supports word exclusions, via the environment variable EXCLUDED_WORDS as documented in Environment Variables

But the exclusions are only made in case of text comparison.

If there is an MBID match, Spotisub will just use this song without doing excluded words checks.

This is because, for example, if we want to exclude the word "live" from Subsonic searches, but in our Spotify playlist we have a song with "live" in it that matches by MBID a song in our Subsonic library.

In this case, that song should not be skipped and the correct way of making it not being added to the Subsonic playlist is to manually remove it from the Spotify playlist.

In case of playlist generated by recommendation, well, Spotify doesn't add things like "live" or "instrumental" or "demo" to their recommendation playlists.

Same thing for artists top tracks playlists.

Planned Features

Dashboard

  • Ability to delete, skip or download matching tracks using spotdl
  • Configure Spotisub trough the dashboard instead of docker env variables
  • Ability to interact with spotdl and lidarr integrations from the dashboard
  • Ability to manually match and easily submit missing ISRC values to Musicbrainz via a text comparison suggestion page

Help

NOTE. Depending on your library size and your playlists number and size on Spotify, the execution may take a very long time. To avoid Spotify rate limiting a lot of time.sleep() have been added to the code.

Official Spotisub communities

  • Discord: https://discord.gg/jXQauuhy5w
  • Reddit: https://www.reddit.com/r/spotisub/

Acknowledgments

A big thanks to the developers and maintaners of these libraries\softwares:

Related Skills

View on GitHub
GitHub Stars228
CategoryDevelopment
Updated6d ago
Forks11

Languages

Python

Security Score

95/100

Audited on Mar 31, 2026

No findings