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 (with liked state)
upload(file, title, album=None) yes upload a track
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.1a1.tar.gz (8.2 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.1a1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: plyrfm-0.0.1a1.tar.gz
  • Upload date:
  • Size: 8.2 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.1a1.tar.gz
Algorithm Hash digest
SHA256 8cb3a0ec9646a00b683cc067a09886c788bc1eb24eb2fb2d156a01a92be40cfd
MD5 45fa4f98a5923fc161b544b9c8c3ae38
BLAKE2b-256 551b7fde057a1edbb07ad87e2a59cd041ae6f02d1b3e39b3ecc374032961a5db

See more details on using hashes here.

File details

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

File metadata

  • Download URL: plyrfm-0.0.1a1-py3-none-any.whl
  • Upload date:
  • Size: 10.2 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.1a1-py3-none-any.whl
Algorithm Hash digest
SHA256 321838fc250ca2e66e48f520b4248e9e0642d1b597db4e5ddfd1b5ffaf283d72
MD5 755637b6d1fe82abf41239e5007fa3db
BLAKE2b-256 f33add740163d58801e76e8fb9b12b23346dd22f18530e57ed7bf8983c1e501b

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