Potty - A CLI tool to download Spotify and youtube music using yt-dlp
Posted by Punk_Saint@reddit | Python | View on Reddit | 12 comments
Hey everyone!
I just released Potty, my new Python-based command-line tool for downloading and managing music from Spotify & YouTube using yt-dlp.
This project started because I was frustrated with spotify and I wanted to self-host my own music, and it evolved to wanting to better manage my library, embed metadata, and keep track of what I’d already downloaded.
Some tools worked for YouTube but not Spotify. Others didn’t organize my library or let me clean up broken files or schedule automated downloads. So, I decided to build my own solution, and it grew into something much bigger.
🎯 What Potty Does
- Interactive CLI menus for downloading, managing, and automating your music library
- Spotify data integration: use your exported
YourLibrary.json
to generate tracklists - Download by artist & song name or batch-download entire lists
- YouTube playlist & link support with direct audio extraction
- Metadata embedding for downloaded tracks (artist, album, artwork, etc.)
- System resource checks before starting downloads (CPU, RAM, storage)
- Retry manager for failed downloads
- Duplicate detection & file organization
- Export library data to JSON
- Clean up broken or unreadable tracks
- Audio format & bitrate selection for quality control
👥 Target Audience
Potty is for data-hoarders, music lovers, playlist curators, and automation nerds who want a single, reliable tool to:
- Manage both Spotify and YouTube music sources
- Keep their library clean, organized, and well-tagged
- Automate downloads without babysitting multiple programs
🔍 Comparison
Other tools like yt-dlp handle the download part well, but Potty:
- Adds interactive menus to streamline usage
- Integrates Spotify library exports
- Handles metadata embedding, library cleanup, automation, and organization all in one From what I could find, there’s no other tool that combines all of these in a modular, Python-based CLI.
📦 GitHub: https://github.com/Ssenseii/spotify-yt-dlp-downloader
📄 Docs: readme so far, but coming soon
I’d love feedback, especially if you’ve got feature ideas or spot any rough edges or better name ideas.
SignificantPound8853@reddit
Thank you for developing and sharing this! It's a wonderful tool that solves my problems!
Punk_Saint@reddit (OP)
Your welcome!
TechnicianHot154@reddit
Can I download playlists using this ???
Punk_Saint@reddit (OP)
like spotify playlists? yes you can.
It doesn't use URLs or APIs.
You get your spotify data from the Spotify privacy page I think and they'll send it to you by email after like a day or two. In that folder, you'll find a file called YourLibrary.json (copy this content to the tracks.json in the project) and a file called Playlist1.json (copy the content to the playlists.json in the project) then run the playlists downloader.
In the playlists downloader you can pick whether to download all the playlists or just certain playlists (spacebar to select, a to select all, I to invert selection...) and yeah it'll run a batch-sync download and you'll find your music in the music folder. If you need embedded data, go to the tools section and run the tool, if you need sorting per artist, also available in the tools.
This app is still in alpha and testing, so I'm still adding features.
Note: APIs and Urls as well as different sources (shazam, apple music, soundcloud, deezer...) will be added in the second version when this first version is completely finished.
bitconvoy@reddit
Does it download the actual music files from Spotify, or it just uses the playlist data and searches for the same songs on YT?
Punk_Saint@reddit (OP)
It searches the same songs on youtube.
I noticed an upside to this, sometimes you get them songs in higher quality
bitconvoy@reddit
Interesting. It thought it was the opposite.
TechnicianHot154@reddit
That's nice , it might give it a try .
Punk_Saint@reddit (OP)
Of course!
abolista@reddit
I've used a similar tool in the past. This one I think it was.
The main problem (and a dealbreaker for me) with downloading music from YouTube was that it would sometimes match a different version of the song I was used to listening. It would, for example, download me a live version instead of the studio version.
Does this tool account for that?
Punk_Saint@reddit (OP)
it does not happen as often anymore I think due part to yt-dlp doing something in the background, I've downloaded about 10k songs so far and it only has happened... 3% of the time.
The main problem I will start dealing with soon is songs that it can't find, like lost media or things that doesn't exist on youtube.
Also as you said, I will add a new functionality soon where you can pick what to download for singular items from a list. I considered doing a "lyrics" filter so that it doesn't download music videos but so far I didn't need it.
TechnicianHot154@reddit
Yes that's the main issue for me as well.