bytelus / nowplaying
A lightweight PHP adapter for viewing the current now playing data in Icecast and SHOUTcast 1/2. A part of the Radiolize software suite.
Fund package maintenance!
AzuraCast
Open Collective
Patreon
Installs: 105
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
pkg:composer/bytelus/nowplaying
Requires
- php: >=7.4
- ext-json: *
- ext-libxml: *
- ext-simplexml: *
- ext-xml: *
- psr/http-client: *
- psr/http-factory: *
- psr/log: ^1.1
Requires (Dev)
- guzzlehttp/guzzle: ^7
- http-interop/http-factory-guzzle: ^1.0
- overtrue/phplint: ^1.1
- php-http/discovery: ^1.9
- phpstan/phpstan: ^0.11.1
- phpstan/phpstan-strict-rules: ^0.11.0
- roave/security-advisories: dev-master
This package is not auto-updated.
Last update: 2025-10-30 08:22:19 UTC
README
NowPlaying is a lightweight, modern, object-oriented PHP library that abstracts out the currently playing metadata from popular radio broadcast software into a single common return format.
Installing
NowPlaying is a Composer package that you can include in your project by running:
composer require bytelus/nowplaying
Compatibility
| Now Playing data | Detailed client information | |
|---|---|---|
| Icecast (2.4+) | ✅ | ✅ |
| SHOUTcast 2 | ✅ | ✅ |
| SHOUTcast 1 | ✅ | ❌ |
Usage Example
<?php // Example PSR-17 and PSR-18 implementation from Guzzle 7 // Install those with: // composer require guzzlehttp/guzzle:^7 http-interop/http-factory-guzzle $adapterFactory = new \NowPlaying\Adapter\AdapterFactory( new \Http\Factory\Guzzle\UriFactory, new \Http\Factory\Guzzle\RequestFactory, new \GuzzleHttp\Client ); $adapter = $adapterFactory->getAdapter( \NowPlaying\Adapter\AdapterFactory::ADAPTER_SHOUTCAST2, 'http://my-station-url.example.com:8000', 'AdminPassword!' // Optional ); // The first argument to the functions is the mount point or // stream ID (SID), to pull one specific stream's information. $now_playing = $adapter->getNowPlaying('1'); $clients = $adapter->getClients('1');
Example "now playing" response (PHP objects represented in JSON):
{
"currentSong": {
"text": "Joe Bagale - Until We Meet Again",
"title": "Until We Meet Again",
"artist": "Joe Bagale"
},
"listeners": {
"current": 0,
"unique": 0,
"total": 0
},
"meta": {
"online": true,
"bitrate": 128,
"format": "audio/mpeg"
},
"clients": []
}
Example "clients" response:
[
{
"uid": 1,
"ip": "127.0.0.1",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36",
"connectedSeconds": 123
}
]