Skip to main content

downsonic

downsonic is a little command-line utility made to help download all of a user's music from an OpenSubsonic server.

downsonic is meant to fill a similar niche to rsync; it keeps it simple as a transfer utility. It's not as intelligent as rsync—no delta-transfers here—but music libraries tend not to be edited, only added to.

What sets downsonic apart from rsync for music is that, in working with the OpenSubsonic API, you have the option to transcode your music before downloading it. This can save you considerable space if you'd just like a good-enough copy of your music for the occasional offline listen.

installing

On pipx systems:

pipx install downsonic

On pip systems, for global installation:

pip install downsonic

For development and other cases: the program's more or less a single file, at src/downsonic/main.py.

usage

usage: downsonic [-h] [--netrc-file NETRC_FILE] [-u USER] [-p PASSWORD] [-b BITRATE] [-F FORMAT] [-e EXTENSION] [-t THREADS] [-f] [-v] [--non-interactive] [--completions] [-V] source destination

examples:
  downsonic music.server.local ~/Music
  downsonic https://music.server.me ~/Music --netrc-file ~/.another-netrc
  downsonic https://music.server.me:1234 ~/Music -F mp3 -b 320

positional arguments:
  source                OpenSubsonic server to download music from; [http[s]://]HOST[:PORT], where port defaults to 80 for http, 443 for https, and 8080 when unspecified
  destination           destination directory

options:
  -h, --help            show this help message and exit
  --netrc-file NETRC_FILE
                        path to a netrc file with login credentials; defaults to `~/.netrc`
  -u, --user USER       username for server login ⚠️ see help on `--password`
  -p, --password PASSWORD
                        password for server login ⚠️ avoid supplying your passwords through the terminal in plaintext, and instead consider using a netrc file
  -b, --bitrate BITRATE
                        target bitrate for transcoded files, in kbps; unspecified or `0` set no limit
  -F, --format FORMAT   audio format; navidrome servers, for example, support `mp3`, `flac`, `aac`, and `raw` (no transcoding)
  -e, --extension EXTENSION
                        override the extension of all audio files; when unspecified, each file's extension will be inferred automatically
  -t, --threads THREADS
                        maximum number of threads (and parallel network connections) to use while downloading
  -f, --force           (re)download songs even if they're already in the destination directory
  -v, --verbosity       how much logging to show; `-v` for critical errors (🛑), `-vv` for recoverable errors (⛔️), `-vvv` for warnings (⚠️), `-vvvv` for info (default), and `-vvvvv` for debug (🪲)
  --non-interactive     don't show dynamic UI elements, like progress bars
  --completions         print instructions to enable shell autocompletion and exit
  -V, --version         print the program's version and exit

contributing

Feel free to ask questions here or at person@dandelion.computer. I'll do my best to collaborate with those who'd like to!

license

GNU General Public License v3.0 or later. See license in LICENSE.md.

Metadata

Release files for downsonic 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for downsonic 0.0.3
File Size Uploaded Provenance Actions
downsonic-0.0.3.tar.gz 18.9 kB Without provenance Details for downsonic-0.0.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for downsonic 0.0.3
File Interpreter ABI Platform Actions
downsonic-0.0.3-py3-none-any.whl Python 3 none any Details for downsonic-0.0.3-py3-none-any.whl

Total release size: 39.0 kB

Release files / downsonic-0.0.3.tar.gz

Download URL downsonic-0.0.3.tar.gz
Size 18.9 kB
Tags Source
SHA-256 checksum
How to use checksums
331cd5cdb27773c9fb69e0c908047011e84617dc61b6ce3b7b96b0417e9b5a18
BLAKE2b-256 checksum
How to use checksums
40a4bf6fa7c5cc042063b91095d8672b45227bdcc62bfe0cce050b74d6b214bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Release files / downsonic-0.0.3-py3-none-any.whl

Download URL downsonic-0.0.3-py3-none-any.whl
Size 20.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
92c766efcaceedfa5b15b9b8c0f038d0d07cab6b84f78e963a248cb90c6caf2a
BLAKE2b-256 checksum
How to use checksums
682aa461f9421cb5832d69a0006acbf6892c991139d6c0bd5dd390fb4a154abd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Security for downsonic 0.0.3

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page