Skip to main content

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

Project description

Python checks PyPI - Version Documentation

plistsync

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

plistsync logo

Overview

plistsync is a Python toolbox designed to solve the common problem of fragmented music libraries across different platforms. Whether you're a DJ moving playlists between Traktor and streaming services, a music enthusiast syncing collections between Plex and Spotify, or simply organizing your music across multiple platforms, plistsync provides a unified interface to transfer, convert, and match your music data.

The core of plistsync is its abstraction layer that normalizes tracks, collections, and playlists from various services into a common format, enabling seamless synchronization while handling the complexities of different APIs, authentication methods, and metadata formats.

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

Getting started

For detailed usage guides, API reference, and examples, see the full documentation.

Is this for you?

plistsync is intended for users who are comfortable with Python and scripting. It is not a point-and-click app, it’s a developer-oriented toolbox for automating music library and playlist workflows.

License

This project is licensed under the PolyForm Noncommercial License 1.0.0.

In short, this license allows broad use for personal, educational, research, and non-profit purposes, but forbids commercial use. We chose it to defend our work in an industry that often exploits artists, where commercial interests seem more important than an inclusive community.

See the LICENSE file for the full terms.

Support the project

If you enjoy this project, there are a few ways you can support us:

  • To add Apple Music support, we are currently looking for someone to support us with an Apple Developer Account. (Apple only allows access to its MusicKit API via a paid Developer Account. If you are a Dev and willing to help us out, please get in touch 🫶)
  • Contribute code: Pull requests, bug reports, and feature suggestions are always welcome!
  • Spread the word: Share the project with friends or on social media.
  • Donate: Every contribution helps fuel more coffee-powered coding sessions!

Keep your music in sync, everywhere.

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

plistsync-0.7.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

plistsync-0.7.0-py3-none-any.whl (131.9 kB view details)

Uploaded Python 3

File details

Details for the file plistsync-0.7.0.tar.gz.

File metadata

  • Download URL: plistsync-0.7.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for plistsync-0.7.0.tar.gz
Algorithm Hash digest
SHA256 4af3408aae2b4045ff5ff4bc10ef33a2e4bb6053c8cb44b7012d418e2b469e22
MD5 020c967a3de2d90e9caeef9722759ec2
BLAKE2b-256 4d834f106a69fd9c794b40e3b43123a85c053a5a62a8ec88de4a8f8af92b6b4e

See more details on using hashes here.

File details

Details for the file plistsync-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: plistsync-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 131.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for plistsync-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2627cc27b4473a11eb7a480efca2f51d7222408d4840fc5adfa0bf0110dd3152
MD5 dbc4e8fb725f060e0183362a0f9f670c
BLAKE2b-256 2e3c457cc079df1618e0a09b84dde1dc10aa378db8e99693f408ae4ea6b8e965

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