An alternative infrastructure-service for legacy NOXON(tm) devices
Project description
xonox
An alternative infrastructure-service for legacy NOXON(tm) devices.
Prerequisites
You need a device that is always-on, reachable by your radios and capable to run Python-scripts. Additionally, you need to redirect DNS entries to the device that runs xonox
.
Compatible Devices
The following devices were reported as compatible:
- Noxon(tm) iRadio 300/360
- Noxon(tm) iRadio 400
- Noxon(tm) iRadio (no support for podcasts or favorites)
- Noxon(tm) 2 Audio (no support for podcasts or favorites)
Getting Started
Installation
Install the module and all of its dependencies via pip:
pip install xonox
Start Service
If you want xonox
to listen on all bound IP-addresses:
python -m xonox
If you want xonox
to listen only on a single IP-address you can use the --host
parameter to specify it.
python -m xonox --host 192.168.3.3
Configure Your Environment
The NOXON(tm) devices locate their services via DNS. To allow them to find the alternative service, you need to configure your local DNS so that the following names point to the host that runs xonox
.
- legacy.noxonserver.eu
- gate1.noxonserver.eu
Manage Your Station List
Add Stations
You can add stations to xonox
by POSTing its metadata to the /station
endpoint.
curl --location --request POST 'http://legacy.noxonserver.eu/station' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Radio Swiss Pop",
"description": "Radio Swiss Pop Live Stream",
"streamUrl": "http://stream.srg-ssr.ch/m/rsp/mp3_128"
}'
Please note that streamUrl
needs to point to the MP3 stream and not to a playlist (M3U). If you don't know how to get this information for your favorite station, have a look at station list of the RadioBrowser project.
Remember that the Noxon(tm) iRadios do not support HTTPS. Therefore you need to supply an HTTP-URL.
Get the List
curl --location --request GET 'http://legacy.noxonserver.eu/station'
Remove a Station
curl --location --request DELETE 'http://legacy.noxonserver.eu/station/0'
Bookmark/Preset/Favorite Support
Since version 0.0.7.2 xonox
supports the preset-buttons of the iRadios. Due to technical challenges (see this comment) only one preset-list is created for all devices by default. This means that a created preset is available on all devices which are connected to the same server.
Separate preset-lists per device are supported experimentally. If you want to try it, you can find more information in the 'Experimental Features' section later in this document.
Configuration File
By default, xonox
writes its configuration and station-list to a file called xonox.conf
inside the user's home directory. If this causes problems on your system, you can specify the storage directory using the --config-dir
parameter.
Experimental Features
Per-Device Bookmarks/Favorites/Presets
You can disable the global preset-list by setting the property useGlobalPresetList
to false
:
curl --location --request POST 'http://legacy.noxonserver.eu/settings' \
--header 'Content-Type: application/json' \
--data-raw '{ "useGlobalPresetList": false }'
If you find want to re-enable the global preset list, set useGlobalPresetList
to true
.
Development
Poetry is used to build and package this project:
# install dependencies
poetry install
# run tests
poetry run pytest
# run xonox
poetry run python -m xonox
# create package
poetry build
Changelog
1.1.0
- Add support for Noxon(tm) 2 Audio and Noxon iRadio #13
1.0.1
1.0.0
- Use semantic versioning
- Added compatibility with Flask >= 2.3.0
- Use Poetry for building and packaging the project
0.0.7.2
0.0.6
0.0.5
- BREAKING CHANGE If the service shall bound to a specific ip-address, it must be provided via
--host
and not the positional parameter like in previous versions. - Added possibility to configure the location of
xonox.config
via command-line parameter--config-dir
. - Fixed 'config not found'
0.0.4 (Withdrawn)
- Added persistence of the station list.
0.0.3
- First publicly available release
(c) 2024 TillW - Licensed to you under the AGPL v3.0
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
Built Distribution
File details
Details for the file xonox-1.1.0.tar.gz
.
File metadata
- Download URL: xonox-1.1.0.tar.gz
- Upload date:
- Size: 20.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.0 CPython/3.10.11 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17fd6d1df95c6d5c8dd5b214f7ffd707814cf620648d28950314a1b3bd251948 |
|
MD5 | 5f5acc95943dc11b78a236421214394b |
|
BLAKE2b-256 | 56d77ec0ba07583a63fe43efdf3b95aac8b4959d4d10b0ce3b7aa8ea5ff7e417 |
File details
Details for the file xonox-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: xonox-1.1.0-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.0 CPython/3.10.11 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69ed0f5b25a524cdfb2eb0d49540363599d38cd68de44f756e074ac1a8675a90 |
|
MD5 | 38e25d902a92e3f32213905c1c66bef6 |
|
BLAKE2b-256 | f93800a081dcf91b374a374068dd8fefcccc2d820587552bfbf5bc9f1948c5b9 |