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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.