Skip to main content

Spots is a modular music coordination library that unifies multiple providers (e.g. Deezer, Spotify, YouTube) into a single, consistent interface.

Project description

🎧 Spots

Spots is a modular music coordination library that unifies multiple providers (e.g. Deezer, Spotify, YouTube) into a single, consistent interface.

It resolves tracks across platforms, matches metadata intelligently, and enables downloading, playlist handling, and media conversion — all through a clean, configurable API.


✨ Features

  • 🔍 Multi-provider search

    • Supports multiple metadata providers with fallback resolution
  • 🧠 Intelligent track matching

    • Matches tracks across platforms using pattern-based scoring
  • 🎵 Unified media resolution

    • Seamlessly map metadata → YouTube → downloadable media
  • Provider fallback system

    • Automatically falls back when a provider fails
  • 🗂️ Built-in caching

    • Reduces redundant API calls and speeds up repeated queries
  • ⚙️ Config-driven architecture

    • Enable/disable integrations (Spotify, YouTube, etc.)
  • 📦 Download + conversion pipeline

    • Handles media extraction and conversion (via yt-dlp)

📦 Installation

pip install spots

⚙️ Setup

Run the setup script:

spots setup
  • follow the prompts to generate the config folder

🚀 Usage

# search a title
# required search format: `Artist - Title`
spots download "Kelsey Lynn - Modern Day Marilyn Monroe"

# download a direct url
spots download "https://www.youtube.com/watch?v=UmZPa5Qudtw"

Spots will:

  • Resolve the track via metadata providers
  • Match it to a YouTube video
  • Download and convert it
  • Store results locally

🎮 Available commands

  • download - downloads a direct url or a search query
    spots download "Kelsey Lynn - Modern Day Marilyn Monroe"
    
  • migrate-likes - transfers likes from Spotify to YouTube (more providers coming soon...)
    spots migrate-likes
    
  • add-to-history - adds a user's downloaded songs to the Spots history. Avoids duplicate downloads.
    spots add-to-history path-to-music
    
  • remove-duplicates - removes duplicate songs in a given folder.
    spots remove-duplicates path-to-music
    

⚠️ Important

The Spotify API content may not be downloaded using this project. This project is created for personal use only and is intended for educational purposes. Any use of this project to download or distribute copyrighted material without proper authorization is against the terms of service of Spotify and other involved platforms. The project's author and contributors are not responsible for any misuse of this software.

🤝 Contributing

Contributions are welcome.

If you're adding a provider or improving matching logic, open a PR with a clear description of changes.


📄 License

GPL-3.0-or-later


💬 Summary

Spots is designed to make cross-platform music workflows simple:

Give it a track — it figures out the rest.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spots_cli-0.1.0.tar.gz (911.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spots_cli-0.1.0-py3-none-any.whl (69.8 kB view details)

Uploaded Python 3

File details

Details for the file spots_cli-0.1.0.tar.gz.

File metadata

  • Download URL: spots_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 911.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for spots_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 67c0f67d84a502a5fa0544718e6b33f9d6f76cdab5695e1b205f822cb519f996
MD5 aa9c63234ff32cc10fdbb868b969c049
BLAKE2b-256 e7ce097c4f9945da58517df5227f51306f8e525f0432da0c2b407dfc724d75a0

See more details on using hashes here.

File details

Details for the file spots_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: spots_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 69.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for spots_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1605ceba45db6a1b5598d92bb877dc0ece992b96f122dfe86f2861a6aa0bfb2d
MD5 a54de467f4bd3442f54cce9a76c1985e
BLAKE2b-256 5b9f8687c135e4dc283b08f29390a8a465a85753c01f4749e5c845887b86e330

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page