Menu-driven PowerShell wrapper for spotDL - Download music from Spotify with an easy-to-use interface
A PowerShell-based menu interface for spotDL with advanced features like batch downloads, iTunes integration, and configuration management.
MenuToSpotdl is a PowerShell wrapper that provides an intuitive menu interface for spotDL with the following features:
- Interactive Menu Interface: Easy-to-navigate menu system for all operations
- Single & Batch Downloads: Download individual tracks or queue multiple URLs
- iTunes Integration: Automatically move downloaded music to iTunes library (designed for use with older iPods)
- Configuration Management: Persistent settings saved in JSON format
- Multiple Audio Formats: Support for MP3, FLAC, OGG, and more
- Bitrate Control: Configurable audio quality settings
- YouTube Music Premium: Support for cookies to access higher quality audio
- Metadata Operations: Save only metadata without downloading audio
- Playlist Synchronization: Keep local folders in sync with Spotify playlists
- Queue Management: View and manage download queues
- Single Download - Download individual tracks, albums, or playlists
- Batch Download (Queue Mode) - Add multiple URLs to queue and download all at once
- View Download Queue - Manage queued downloads
- Save Metadata Only - Extract and save metadata without downloading audio
- Sync Playlist - Synchronize local folders with Spotify playlists
- Get Download URLs - Get YouTube URLs without downloading
- Configuration Settings - Manage all settings through interactive menus
- Spotify Login Status - Check authentication status
- Exit - Close the application
Before using MenuToSpotdl, you must have spotDL installed on your system.
- spotDL requires Python 3.8 or higher.
- If you don't have Python installed, you can download it from python.org.
- In this project, we recommend using a virtual environment to manage dependencies and isolate the project environment.
- Create a virtual environment:
python -m venv venv
- Activate the virtual environment:
- On Windows:
venv\Scripts\activate
- On macOS/Linux:
source venv/bin/activate
- On Windows:
- Install spotDL:
pip install spotdl
- To update spotDL:
pip install --upgrade spotdl
- Create a virtual environment:
On some systems you might have to change
piptopip3.
Other options
All this methods need to modify the ps1 to start the spotdl correctly-
Prebuilt executable
- You can download the latest version from the Releases Tab
-
On Termux
curl -L https://raw.githubusercontent.com/spotDL/spotify-downloader/master/scripts/termux.sh | sh
-
Arch
- There is an Arch User Repository (AUR) package for spotDL.
-
Docker
-
Build image:
docker build -t spotdl . -
Launch container with spotDL parameters (see section below). You need to create mapped volume to access song files
docker run --rm -v $(pwd):/music spotdl download [trackUrl]
-
-
Build from source
git clone https://github.com/spotDL/spotify-downloader && cd spotify-downloader pip install poetry poetry install poetry run python3 scripts/build.py
An executable is created in
spotify-downloader/dist/.
FFmpeg is required for spotDL. If using FFmpeg only for spotDL, you can simply install FFmpeg to your spotDL installation directory:
spotdl --download-ffmpeg
We recommend the above option, but if you want to install FFmpeg system-wide, follow these instructions
- Windows Tutorial
- OSX -
brew install ffmpeg - Linux -
sudo apt install ffmpegor use your distro's package manager
- Clone or download this repository
- Ensure you have spotDL and FFmpeg installed (see Prerequisites above)
- Run the PowerShell script:
.\Run.ps1
The application will automatically detect and activate a virtual environment if available in the project folder (.\venv).
MenuToSpotdl uses a config.json file to store settings persistently. Configuration can be managed through the interactive menu (Option 7) or by editing the file directly.
{
"bitrate": "320k",
"outputFolder": "Downloads\\",
"moveToItunes": true,
"itunesPath": "%USERPROFILE%\\Music\\iTunes\\iTunes Media\\Adicionar Automaticamente ao iTunes",
"onlyVerified": true,
"audioFormat": "mp3",
"embedLyrics": true,
"embedAlbumArt": true,
"clientId": "",
"clientSecret": "",
"userAuth": false,
"useCookieFile": false,
"cookieFilePath": "cookies.txt"
}- bitrate: Audio quality (128k, 192k, 256k, 320k)
- outputFolder: Download destination folder
- moveToItunes: Automatically move files to iTunes library
- itunesPath: iTunes automatic folder path
- onlyVerified: Use only verified YouTube results
- audioFormat: Output format (mp3, flac, ogg, m4a, opus)
- embedLyrics: Include lyrics in metadata
- embedAlbumArt: Include album artwork
- clientId/clientSecret: Spotify API credentials (optional)
- userAuth: Use Spotify user authentication
- useCookieFile: Enable YouTube Music Premium cookies
- cookieFilePath: Path to cookies.txt file
The iTunes integration feature was specifically developed to enable the use of Spotify music on older iPod devices. When enabled, downloaded music files are automatically moved to iTunes' auto-import folder, making them available for syncing with classic iPods and other legacy Apple devices.
This feature is particularly useful for:
- Classic iPod users who want to enjoy Spotify playlists on their vintage devices
- Automatic library management - files are seamlessly integrated into iTunes
- Legacy device compatibility - bridging modern streaming with classic hardware
The integration works by moving completed downloads to iTunes' "Automatically Add to iTunes" folder, where iTunes will automatically import and organize the files.
MenuToSpotdl uses spotDL as its backend, which sources music from YouTube. This method is used to avoid any issues related to downloading music from Spotify.
Note Users are responsible for their actions and potential legal consequences. We do not support unauthorized downloading of copyrighted material and take no responsibility for user actions.
spotDL downloads music from YouTube and is designed to always download the highest possible bitrate; which is 128 kbps for regular users and 256 kbps for YouTube Music premium users. MenuToSpotdl provides configurable bitrate settings in its configuration menu.
Contributions to MenuToSpotdl are welcome! Feel free to submit issues, feature requests, or pull requests to help improve this PowerShell wrapper.
This project is built on top of the excellent spotDL library created by spotDL Team. MenuToSpotdl is simply a PowerShell wrapper that provides a menu interface for the amazing work done by the spotDL developers.
All the core functionality and music downloading capabilities belong to the original spotDL project. This wrapper just makes it easier to use spotDL through an interactive menu system.
Special thanks to:
- The entire spotDL development team for creating and maintaining such a powerful and reliable tool
- The open-source community for making projects like spotDL possible
Please consider supporting the original spotDL project if you find this wrapper useful!
This project is Licensed under the MIT License.