plistsync

Toolbox for transferring, converting and matching music collections and playlists across services.

Note

We are always happy for contributions, whether small or big. Feel free to check out our contribution guide, improvements to both code and documentation are welcome!

Features

  • Unified Abstraction Layer: Normalizes tracks, collections, and playlists from various services into a common format, enabling seamless synchronization across platforms

  • Extensible Service Architecture: The abstraction layer is designed to support arbitrary music services with consistent APIs

    • Currently supports Spotify, Tidal, Plex, Traktor and local files

  • Collection Management: Sync entire music libraries or specific playlists between services

  • Developer-Friendly: Built with type hints, comprehensive error handling, and pytest for testing

  • Flexible Configuration: Manage service credentials and preferences through config files

Installation

You can install plistsync from PyPi.

pip install plistsync
uv add plistsync

To keep the package slim and flexible, all services (like spotify or tidal) are optional. But to get started, we recommend grabbing them:

pip install plistsync[allservices]
uv add plistsync[allservices]

Pre-v1.0.0

The library is currently pre-release (<1.0.0). While fully usable, breaking changes to the public API (e.g., function signatures, module structure) may occur without deprecation warnings. Once v1.0.0 is released, we will follow semantic versioning strictly and properly deprecate public-facing methods before removal.

Note

plistsync follows Semantic Versioning. While we strive to maintain backward compatibility within the same major version, we strongly recommend using a lockfile (such as requirements.txt for pip or uv.lock for uv) to prevent unexpected breaking changes when upgrading between major versions.

If this is your first time using plistsync, we recommend reading the getting started guide to familiarize yourself with the core concepts and functionalities of the library.