Skip to main content

python sdk for plyr.fm - music streaming on AT Protocol

Project description

plyrfm

python sdk for plyr.fm - music streaming on AT Protocol

installation

uv add plyrfm
# or
pip install plyrfm

authentication

some operations (listing public tracks, getting a track by ID) work without auth.

for authenticated operations (upload, download, delete, my-tracks):

  1. go to plyr.fm/portal -> "your data" -> "developer tokens"
  2. create a token (you'll authorize via your PDS)
  3. set it in your environment:
export PLYR_TOKEN="your_token_here"

quick start

CLI

# install
uvx plyrfm --help
# or: uv tool install plyrfm

# public (no auth required)
plyrfm list                        # list all tracks

# authenticated (requires PLYR_TOKEN)
plyrfm my-tracks                   # list your tracks
plyrfm upload track.mp3 "My Song"  # upload
plyrfm download 42 -o song.mp3     # download
plyrfm delete 42 -y                # delete
plyrfm me                          # check auth

sync client

from plyrfm import PlyrClient

# public operations (no auth)
client = PlyrClient()
tracks = client.list_tracks()
track = client.get_track(42)

# authenticated operations
client = PlyrClient(token="your_token")  # or set PLYR_TOKEN
my_tracks = client.my_tracks()
result = client.upload("song.mp3", "My Song")
client.delete(result.track_id)

async client

import asyncio
from plyrfm import AsyncPlyrClient

async def main():
    # public (no auth)
    async with AsyncPlyrClient() as client:
        tracks = await client.list_tracks()

    # authenticated
    async with AsyncPlyrClient(token="your_token") as client:
        await client.upload("song.mp3", "My Song")

asyncio.run(main())

explicit configuration

from plyrfm import PlyrClient

# pass token directly
client = PlyrClient(token="your_token")

# use staging API
client = PlyrClient(api_url="https://api-stg.plyr.fm")

# both
client = PlyrClient(
    token="your_token",
    api_url="https://api-stg.plyr.fm",
)

API reference

method auth description
list_tracks(limit=50) no list all public tracks
get_track(track_id) no get track by ID
my_tracks(limit=50) yes list your tracks
upload(file, title, album=None) yes upload a track
update_track(track_id, title=None, album=None, image=None) yes update track metadata
download(track_id, output=None) yes download track audio
delete(track_id) yes delete a track
me() yes get current user info

environment variables

variable default description
PLYR_TOKEN - developer token (for authenticated operations)
PLYR_API_URL https://api.plyr.fm API base URL

requirements

  • python 3.10+
  • developer token from plyr.fm

license

MIT

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

plyrfm-0.0.1a3.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

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

plyrfm-0.0.1a3-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file plyrfm-0.0.1a3.tar.gz.

File metadata

  • Download URL: plyrfm-0.0.1a3.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for plyrfm-0.0.1a3.tar.gz
Algorithm Hash digest
SHA256 2402e81ba001dc6064c1162e6e99eee1f357d7a051cd594c6e260be832297d26
MD5 5445277b1995d1aaaa4e7c8e1db67f40
BLAKE2b-256 70ff976c909ec2b1d72749fbca75243f2a33557a6a9c4c4f80f3946c6da46691

See more details on using hashes here.

File details

Details for the file plyrfm-0.0.1a3-py3-none-any.whl.

File metadata

  • Download URL: plyrfm-0.0.1a3-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for plyrfm-0.0.1a3-py3-none-any.whl
Algorithm Hash digest
SHA256 6b270868159cb13fa53507bb7706834703990af87bada1396bde9193be0ffdea
MD5 ba1ccc6ea8e9f02a95cac252c3e111f7
BLAKE2b-256 3fe1934fdb869a4e306c546854ce1b6e006686522a5944ee9a863404bb17948f

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