Skip to main content

A python wrapper library for the Open Subsonic REST API. https://opensubsonic.netlify.app/

Project description

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 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

Adding the async impl along with a sync one was not done in the most pythonic way and should be revisited to avoid some of the code duplication. I will eventually get to it, but patches welcome!

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

py_opensonic-8.1.3.tar.gz (53.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_opensonic-8.1.3-py3-none-any.whl (54.6 kB view details)

Uploaded Python 3

File details

Details for the file py_opensonic-8.1.3.tar.gz.

File metadata

  • Download URL: py_opensonic-8.1.3.tar.gz
  • Upload date:
  • Size: 53.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for py_opensonic-8.1.3.tar.gz
Algorithm Hash digest
SHA256 ea2f714eb9d4c38a62437d754474d136718ecb2b9594ef7554acbfd731dfefe2
MD5 2bd5b98e6cb4cb84472cdf3d3fe4f761
BLAKE2b-256 3e1cee1bc372cdf721b11ae3ac2f361464a7dc6dc5f6d0af5831447a0900f833

See more details on using hashes here.

File details

Details for the file py_opensonic-8.1.3-py3-none-any.whl.

File metadata

  • Download URL: py_opensonic-8.1.3-py3-none-any.whl
  • Upload date:
  • Size: 54.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for py_opensonic-8.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 31a0dff9dbb6df10d4ffa5e522449d733ba6e5dbb62ccf9b5c0acab4dd20488d
MD5 628d61e897c6067b77052808a24a9faf
BLAKE2b-256 09e536d6fd68536d36fe84b8dfe7977ceb96d8dccf681d0c67dbe2db67484024

See more details on using hashes here.

Supported by

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