Skip to main content

py-opensonic

A python library for interacting with an Open Subsonic API implementation. This started its life as the py-sonic library. I have tested with Gonic (and continue to do so against each stable docker release). Please open issues if you discover problems with other implementations.

As of 10.0.0 we have stopped using unasync and instead the sychronous Connection object is a thin wrapper around the AsyncConnection that runs an event loop and makes async method calls for the user.

As of 9.0.0 we use unasync to generate the synchronous Connection class from the Async one. This will stop us from having to maintain duplicate code in the two classes. If you submit a PR that changes the Async class, please be sure to run scripts/gen_sync.py and add the resulting changes to the synchronous class as well.

Any PRs that change the synchronous class by hand or without updating the asynchronous one and/or the gen_sync.py script will be immediately closed.

As of 8.0.0 this library now offers an AsyncConnection object that uses aiohttp for all its http requests. It does not create an event loop so is usable inside any application built on asyncio. The Connection object will continue to use synchronous IO and will remain for backward compatibility.

INSTALL

Installation is fairly simple. Just do the standard install as root:

tar -xvzf py-opensonic-*.tar.gz
cd py-opensonic-*
python setup.py install

You can also install directly using pip or easy_install

pip install py-opensonic

USAGE

This library follows the REST API almost exactly (for now). If you follow the documentation on https://opensubsonic.netlify.app/docs/ or you do a:

pydoc libopensonic.connection

The py-sonic original author has added documentation at http://stuffivelearned.org/doku.php?id=programming:python:py-sonic

BASIC TUTORIAL

This is about as basic as it gets. We are just going to set up the connection and then get a couple of random songs.

#!/usr/bin/env python

import libopensonic

# We pass in the base url, the username, password, and port number
# Be sure to use https:// if this is an ssl connection!
conn = libopensonic.Connection('https://music.example.com' , 'myuser' , 
    'secretpass' , port=443)
# Let's get 2 completely random songs
songs = conn.get_random_songs(size=2)
# We'll just pretty print the results we got to the terminal
print(songs[0])
print(songs[1])

As you can see, it's really pretty simple. If you use the documentation provided in the library:

pydoc libopensonic.connection

or the api docs on opensubsonic.netlify.app (listed above), you should be able to make use of your server without too much trouble.

Async/Sync Cohabitation

As of 9.0.0 we use unasync to generate the synchronous Connection class from the Async one. This will stop us from having to maintain duplicate code in the two classes. If you submit a PR that changes the Async class, please be sure to run scripts/gen_sync.py and add the resulting changes to the synchronous class as well.

Any PRs that change the synchronous class by hand or without updating the asynchronous one and/or the gen_sync.py script will be immediately closed.

pytest

There are now pytest unit tests which are configured to run on any new PR, these tests must be passing to merge. Please add tests to any fixes or new features.

Metadata

Release files for py-opensonic 10.4.1

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

Source distribution (sdist)

Source distribution for py-opensonic 10.4.1
File Size Uploaded
py_opensonic-10.4.1.tar.gz 56.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-opensonic 10.4.1
File Interpreter ABI Platform
py_opensonic-10.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 101.9 kB

Release files / py_opensonic-10.4.1.tar.gz

Download URL py_opensonic-10.4.1.tar.gz
Size 56.3 kB
Tags Source
SHA-256 checksum
How to use checksums
be12c1b0c33d60e0e2746aeb70dbf3cafcb717ffe5ce7ea4c24100d0343633d0
BLAKE2b-256 checksum
How to use checksums
b09667b498c4d5dd7046fa4372befe1d1b4d859873a879ed3f02e7310a6cd3f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / py_opensonic-10.4.1-py3-none-any.whl

Download URL py_opensonic-10.4.1-py3-none-any.whl
Size 45.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ef9be327a00fc76ef1773097ff05ee5f6a7cc13f6389cee98f7d64b487c510a
BLAKE2b-256 checksum
How to use checksums
0ef6e5f9b2f05fc6d794fc99bc1972adb1be515f3462381d1ef9b7dfb44ca4bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

10.4.1 This release

2 release files

10.4.0

2 release files

10.2.1

2 release files

10.2.0

2 release files

10.1.0

2 release files

10.0.0

2 release files

9.2.0

2 release files

9.1.0

2 release files

9.0.1

2 release files

9.0.0

2 release files

8.1.3

2 release files

8.1.2

2 release files

8.1.1

2 release files

8.1.0

2 release files

8.0.1

2 release files

7.0.4

2 release files

7.0.3

2 release files

7.0.2

2 release files

7.0.1

2 release files

7.0.0

2 release files

6.0.2

2 release files

6.0.1

2 release files

6.0.0

2 release files

5.3.1

2 release files

5.3.0

2 release files

5.2.1

2 release files

5.2.0

2 release files

5.1.1

2 release files

5.1.0

2 release files

5.0.5

2 release files

5.0.4

2 release files

5.0.3

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.0.7

2 release files

4.0.6

2 release files

4.0.5

2 release files

4.0.3

2 release files

4.0.2

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.0.7

2 release files

3.0.6

2 release files

3.0.5

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.0.2

2 release files

1.0.0

2 release files

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