Built a Spotify to Navidrome playlist Exporter. Meet Navispot 😅
from betsha1830@lemmy.world to selfhosted@lemmy.world on 27 Jan 20:43
https://lemmy.world/post/42264189

Hey everyone! I would like to share a web project that I just built for Navidrome users in this sub. It exports playlists from Spotify to Navidrome. It’s called NaviSpot (Yes! I know! Quiet an original name :P). It’s free and has 0 ads. I’ve wanted to fully transition to Navidrome as my music library and wasn’t sure if there were any other tools that did this. So, I decided to build this and share it with the community if anyone shares the same frustration as I did when trying to move their playlists from Spotify. The project is opensource and is available on github (github.com/betsha1830/navispot). If you would like to check out the live version you can do so by going to navispot.gaga.pro.et.

If you have any suggestions, questions, additional features or need any help feel free to DM me.

Hope y’all have a great day!

#selfhosted

threaded - newest

ivanafterall@lemmy.world on 27 Jan 20:46 next collapse

This looks super cool. Thanks for sharing it!

fprawn@lemmy.world on 27 Jan 20:53 next collapse

I’ve been looking to do exactly this, thank you!

Courantdair@jlai.lu on 27 Jan 20:59 next collapse

Nice! Will try that tomorrow! I just noticed you misspelled the name on the readme: NavidSpot

betsha1830@lemmy.world on 02 Feb 02:50 collapse

Thank you for the correction.

SidewaysHighways@lemmy.world on 27 Jan 21:49 next collapse

yes! more love for navidrome yayyyyy

the_q@lemmy.zip on 27 Jan 22:02 next collapse

Thanks for this.

[deleted] on 27 Jan 22:55 next collapse

.

Bakkoda@lemmy.world on 27 Jan 23:05 next collapse

I’ll give this a shot. Spotisub was very janky for me and missed entire playlists.

dabe@lemmy.zip on 02 Feb 14:50 collapse

Check out github.com/WilliamNT/tunesynctool as well. Its development is a little slow right now but it seems very thoughtfully designed and lets you sync via command line (i’ve done so myself) or you can build around it in python.

Bakkoda@lemmy.world on 02 Feb 15:08 collapse

Ty. I think I’ve pretty much gotten all i need syncd as I’m officially done with Spotify but a cli option is def more efficient for me. If the wife decides to give up Spotify I’ll try it on her playlists as they are far more plentiful. I only used Spotify in the car so only like a dozen or so playlists.

three@lemmy.zip on 27 Jan 23:10 next collapse

YES

Thank you so much!

[deleted] on 27 Jan 23:15 next collapse

.

pirateKaiser@sh.itjust.works on 28 Jan 08:34 next collapse

I was meaning to build exactly this, beat me to it! Awesome stuff my guy/gal, thanks for sharing!

One thing I’m missing from local libraries is music discovery. Do you think a two way sync with Spotify to get recommendations from their engine is something you’d be interested in adding? I’m happy to create a pull request myself soon, a quick scan of their docs show they provide a get recommendations query.

SpatchyIsOnline@lemmy.world on 28 Jan 11:37 collapse

Navidrome can scrobble to ListenBrainz which starts giving you recommendations playlists after a couple of weeks :)

pirateKaiser@sh.itjust.works on 28 Jan 17:08 collapse

Oh I need to read up on that, just started using it recently. Thanks

[deleted] on 28 Jan 09:20 next collapse

.

zorflieg@lemmy.world on 28 Jan 09:44 next collapse

I’ve read on the internet some people export their Spotify to a YouTube playlist to then pass through Parabolic and enter the result into Navidrome. Maybe as a feature you could add a Spotify to YT playlist creator somehow.

SpatchyIsOnline@lemmy.world on 28 Jan 11:46 next collapse

Doing this is generally a bad idea, because audio exported from YouTube is pretty poor quality, and music videos often have bits of talking or silence that make sense in context of the video but aren’t part of the actual song (designed to prevent exactly this). There was a cli tool I used last year that could download music from Spotify directly.

Edit: The tool I was talking about is Zotify

Make sure to set the –download-quality flag to very_high if you have premium to ensure it downloads in max quality

If you have long playlists (more than a few hundred songs), you should also use the –skip-previously-downloaded and –song-archive flags as per the docs to make sure you can start again from where you left off, as Spotify will start to rate-limit your connection and downloads will fail (if this happens, just kill the tool, wait a few minutes and start again)

betsha1830@lemmy.world on 02 Feb 02:48 collapse

That would be out of scope for this project. But maybe a YouTube to Navidrome playlist exporter that I might add in the future.

[deleted] on 28 Jan 09:50 next collapse

.

probable_possum@leminal.space on 28 Jan 11:19 collapse

HLS

Probably a better fit: HTTP_Live_Streaming

Disambiguation page also suggests Vatican state Maybe…

[deleted] on 28 Jan 11:20 next collapse

.

[deleted] on 28 Jan 11:40 next collapse

.

[deleted] on 28 Jan 11:50 next collapse

.

Decronym@lemmy.decronym.xyz on 28 Jan 12:30 next collapse

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:

Fewer Letters More Letters
FCC Federal Communications Commission
~ (Iron/steel) Face-Centered Cubic crystalline structure
HLS Human Landing System (Artemis)
Jargon Definition
Starlink SpaceX’s world-wide satellite broadband constellation

3 acronyms in this thread; the most compressed thread commented on today has 16 acronyms.

[Thread #38 for this comm, first seen 28th Jan 2026, 12:30] [FAQ] [Full list] [Contact] [Source code]

Azzu@lemmy.dbzer0.com on 28 Jan 12:49 next collapse

Didn’t see it at the project site, what happens if it can not find a match?

betsha1830@lemmy.world on 02 Feb 02:42 collapse

It’ll mark it as missing and moves to the next track to match. You can then download the missing tracks in your server as a JSON file.

M137@lemmy.world on 28 Jan 12:54 next collapse

Quite*

Pure_Psykosis@lemmy.ca on 28 Jan 13:02 next collapse

Thank you! This will probably get me to check out navidrome.

biggerbogboy@sh.itjust.works on 28 Jan 13:33 next collapse

Is there a possibility of getting banned from Spotify for using this? Just wondering since this is really compelling, since I’ve always wanted to back playlists up just in case, but I don’t really wish to completely cut Spotify, since I quite like the playlists it builds to expand my library, snd there would also be the plus of being able to switch to navidrome if the Spotify site carks it like it seemingly loves to.

betsha1830@lemmy.world on 02 Feb 02:44 next collapse

This is perfectly legal as far as I know. But if you’re unsure you can always go through their terms of services.

dabe@lemmy.zip on 02 Feb 14:52 collapse

There’s almost no chance of getting banned for this. Spotify themselves provides the APIs that let you get metadata about your playlists and tracks, and setting up a developer account with them is petty easy.

It’s moreso a concern of Spotify eventually limiting/ratelimiting that data retrieval in the future… which is why you should back up now while you can!

MIXEDUNIVERS@discuss.tchncs.de on 29 Jan 16:02 next collapse

I have set up my music server and my problem is that Lidar can’t download single songs only albums and artists. Or it can and I’m using it wrong, but to this day I haven’t found the right setting and it frustrated me so much that I quit the project.

dabe@lemmy.zip on 02 Feb 14:48 collapse

Looks cool!

I’m curious about the ISRC matching. I’m working on bringing support for retrieval by ISRC in opensubsonic clients (and Navidrome tends to support the opensubsonic spec) but I didn’t think anyone actually added support yet since it was somewhat recently added to the spec.

I thought maybe it was a Navidrome specific feature to retrieve by ISRC, which would be cool!

But looking at what I think is the track matching algorithm for ISRC seems to just always return unmatched github.com/betsha1830/navispot/…/isrc-matcher.ts

Am I just reading it wrong?

betsha1830@lemmy.world on 02 Feb 17:44 collapse

The main ISRC matching is done in the orchestrator.ts file within the same folder. Subsonic was difficult to work with when I tried to implement matching because the endpoint had a limited number of tracks it returns. So I ended using the native Navidrome search API to find the track by title and compares the ISRC. You can check out the file to have a better understanding. Feel free to reach out if you have any more questions.