Pushtunes
Pushtunes is a small tool to push your music from local sources (Subsonic-compatible server/Navidrome, Jellyfin, a CSV file, etc.) to music streaming services. It can also back up your music libraries to CSV files and restore them later. Currently Spotify, YouTube Music, and Tidal are supported. See "Music streaming services" below for more.
Documentation is also available in an easy-to-browse style on Read the Docs, if you prefer.
Installation
With any pip-like environment (pip, uv, etc.) it should be as easy as:
pip install pushtunes
See Installation for more examples or how to install from source instead.
Usage
Set your music service and source credentials (see Getting Started and, for example:
# Push albums from Subsonic to Spotify
pushtunes push albums --from subsonic --to spotify
# Push individual tracks (starred/favorites) from Subsonic to Spotify
pushtunes push tracks --from subsonic --to spotify
# Push playlists from Subsonic to Spotify, YouTube Music, or Tidal
pushtunes push playlist --from subsonic --playlist-name=myplaylist --to spotify
pushtunes push playlist --from subsonic --playlist-name=myplaylist --to ytm
pushtunes push playlist --from subsonic --playlist-name=myplaylist --to tidal
# Push from CSV file
pushtunes push tracks --from csv --csv-file=tracks.csv --to spotify
See pushtunes --help, pushtunes push albums --help, pushtunes push tracks --help, or pushtunes push playlist --help for more options.
There are many advanced features such as:
- Mapping items that can't be found
- Filtering what gets skipped
- Deleting things that aren't in the source
- Managing and syncing playlists — cross-service, Subsonic/Jellyfin, conflict handling, and mappings
- Exporting problematic items to CSV for debugging and fixing
Music sources
- Subsonic (including Navidrome, Airsonic, etc.)
- Jellyfin
- CSV files
Music streaming services
- Spotify
- YouTube Music
- Tidal
The streaming service market is in a very sad state of affairs regarding APIs. Spotify and Tidal have good ones, YouTube Music is almost unusable and working with it is only possible thanks to the people who maintain the unofficial ytmusicapi library. Deezer and Qobuz don't allow anyone to use their API anymore, requests for API keys go unanswered, documentation is being deleted and no up to date libraries exist.
Your main choices are Spotify, YouTube Music, and Tidal.
More documentation
Metadata
Release files for pushtunes 2.15.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pushtunes-2.15.1.tar.gz | 134.8 kB | Without provenance | Details for pushtunes-2.15.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pushtunes-2.15.1-py3-none-any.whl | Python 3 | none | any | Details for pushtunes-2.15.1-py3-none-any.whl |
Total release size: 236.6 kB
Release files / pushtunes-2.15.1.tar.gz
| Download URL | pushtunes-2.15.1.tar.gz |
|---|---|
| Size | 134.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4440cf1ecac95d369fa0ba375f308a494d414d8803fe679625c1db91331dea84
|
|
BLAKE2b-256 checksum How to use checksums |
16d7ccf6edd9a115871a5173bbd2c576b6a7c6a2ce097f46f228642a222d8975
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Release files / pushtunes-2.15.1-py3-none-any.whl
| Download URL | pushtunes-2.15.1-py3-none-any.whl |
|---|---|
| Size | 101.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
25d8b62680c365c247d0d2a40476d6786c017148095d0ce76cd483ed43d3fdc4
|
|
BLAKE2b-256 checksum How to use checksums |
c13cb7f68d962dcfe461c52cd371550d1ba21d28430e27608c6abc5cbdba78ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Security for pushtunes 2.15.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.