Skip to main content

A CLI tool to manage playlists across music streaming services.

Project description

unitunes

PyPI version unituneslogo

A command-line interface tool to manage playlists across music streaming services.

Introduction

unitunes is designed to keep playlists in sync across multiple streaming services. unitunes is a free, local, replacement for services like Soundiiz and TuneMyMusic.

unitunes defines Universal Playlists (UPs), a service agnostic representation of a playlist. UPs are the source of truth for playlists on streaming services. UPs are stored as plain text JSON, enabling them to be checked into version control systems.

The unitunes CLI tool provides a command-line interface to manage UPs. Playlists can be pushed and pulled from streaming services. unitunes automatically searches for missing tracks.

Current Supported Streaming Services

Name Pullable Pushable Searchable
MusicBrainz
Spotify
Youtube Music

Want to add support for a new streaming service? See contributing.

Documentation

Documentation

Quickstart

Installation

pip install unitunes

Initialize

unitunes init

This creates a config.json file in the current directory.

Add Services

Spotify

Follow the instructions at https://spotipy.readthedocs.io/en/2.19.0/#getting-started to obtain client credentials.

Put the credentials in a file like so:

{
  "client_id": "...",
  "client_secret": "...",
  "redirect_uri": "http://example.com"
}

Register the service in unitunes:

unitunes service add spotify spotify_config.json

Youtube Music

Follow the instructions at https://ytmusicapi.readthedocs.io/en/latest/setup.html#manual-file-creation to create a ytm_config.json file.

Register the service in unitunes:

unitunes service add ytm ytm_config.json

Add Playlists

Initialize UP's from your existing playlists:

unitunes fetch spotify # use -f to skip confirmation
unitunes fetch ytm

Pull Playlists

Pull all tracks from all playlists.

unitunes pull

Search Playlists

Search for tracks on another service:

unitunes search SERVICE_NAME PLAYLIST_NAME

Push Playlists

Push all changes to streaming services:

unitunes push

Contributing

unitunes is in alpha. Contributions are very welcome. I am looking for collaborators to grow unitunes into a foundation for user controlled music software.

Take a look at the open issues!

To develop, fork the repository and clone it into your local directory. Install poetry. Run pytest to run tests. Add a service config to run more tests.

pytest --spotify spotify_config.json --ytm ytm_config.json # may need to run with -s to paste spotify redirect URL the first time

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

unitunes-0.1.1.tar.gz (55.2 kB view details)

Uploaded Source

Built Distribution

unitunes-0.1.1-py3-none-any.whl (59.0 kB view details)

Uploaded Python 3

File details

Details for the file unitunes-0.1.1.tar.gz.

File metadata

  • Download URL: unitunes-0.1.1.tar.gz
  • Upload date:
  • Size: 55.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.12 Darwin/21.4.0

File hashes

Hashes for unitunes-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b2ad82a58bbda6bfb70ad00da87a9f4bf3c0342e3c897d4cd6af3f6452dfd9dd
MD5 018b10f6147777c67abeb78c769907e7
BLAKE2b-256 78359b1caddddd6559e1402436f2ec79097cb20384e998de0ec5cc362be0020e

See more details on using hashes here.

File details

Details for the file unitunes-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: unitunes-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 59.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.12 Darwin/21.4.0

File hashes

Hashes for unitunes-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9a0c2da18f1f39f5c1fc7f617470e6b59f8b9a2c7f2e646a45ccb262ab247f84
MD5 7ac85c6cd5b61ab5676cd72a4b52d98f
BLAKE2b-256 2d76d2c416f5c1e19581ddb1311c88a63b05e07442d9719706117d9105a2ba98

See more details on using hashes here.

Supported by

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