Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MenuToSpotdl

Menu-driven PowerShell wrapper for spotDL - Download music from Spotify with an easy-to-use interface

MIT License

A PowerShell-based menu interface for spotDL with advanced features like batch downloads, iTunes integration, and configuration management.


Features

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

Menu Options

  1. Single Download - Download individual tracks, albums, or playlists
  2. Batch Download (Queue Mode) - Add multiple URLs to queue and download all at once
  3. View Download Queue - Manage queued downloads
  4. Save Metadata Only - Extract and save metadata without downloading audio
  5. Sync Playlist - Synchronize local folders with Spotify playlists
  6. Get Download URLs - Get YouTube URLs without downloading
  7. Configuration Settings - Manage all settings through interactive menus
  8. Spotify Login Status - Check authentication status
  9. Exit - Close the application

Prerequisites

spotDL Installation

Before using MenuToSpotdl, you must have spotDL installed on your system.

Python (Recommended Method)

  • 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
    • Install spotDL:
      pip install spotdl
    • To update spotDL:
      pip install --upgrade spotdl

On some systems you might have to change pip to pip3.

Other options All this methods need to modify the ps1 to start the spotdl correctly
  • Prebuilt executable

  • On Termux

    • curl -L https://raw.githubusercontent.com/spotDL/spotify-downloader/master/scripts/termux.sh | sh
  • Arch

  • 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/.

Installing FFmpeg

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 ffmpeg or use your distro's package manager

Getting Started

  1. Clone or download this repository
  2. Ensure you have spotDL and FFmpeg installed (see Prerequisites above)
  3. Run the PowerShell script:
    .\Run.ps1

The application will automatically detect and activate a virtual environment if available in the project folder (.\venv).


Configuration

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.

Default Configuration

{
  "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"
}

Configuration Options

  • 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

iTunes Integration for Classic iPods

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.


Music Sourcing and Audio Quality

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.

Audio Quality

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.

Contributing

Contributions to MenuToSpotdl are welcome! Feel free to submit issues, feature requests, or pull requests to help improve this PowerShell wrapper.

Acknowledgments

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!

License

This project is Licensed under the MIT License.

About

simple menu for users who aren't programmers

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages