Package: xonox
xonoxAn alternative infrastructure-service for legacy NOXON(tm) devices.PrerequisitesYou need a device that is always-on, reachable by your iRadios and capable to run Python-scripts. Additionally, you need to redirect DNS entries to the device that runsxonox.Compatible DevicesThe following devices were reported as compatible:Noxon(tm) iRadioNoxon(tm) iRadio 300/360Noxon(tm) iRadio 400Getting StartedInstallationInstall the module and all of its dependencies via pip:pip install xonoxStart ServiceIf you wantxonoxto listen on all bound IP-addresses:python -m xonoxIf you wantxonoxto listen only on a single IP-address you can use the--hostparameter to specify it.python -m xonox --host 192.168.3.3Configure Your EnvironmentThe 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 runsxonox.legacy.noxonserver.eugate1.noxonserver.euManage Your Station ListAdd StationsYou can add stations toxonoxby POSTing its metadata to the/stationendpoint.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 thatstreamUrlneeds 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 theRadioBrowserproject.
Remember that the Noxon(tm) iRadios do not support HTTPS. Therefore you need tosupply an HTTP-URL.Get the Listcurl --location --request GET 'http://legacy.noxonserver.eu/station'Remove a Stationcurl --location --request DELETE 'http://legacy.noxonserver.eu/station/0'Bookmark/Preset/Favorite SupportSince version 0.0.7.2xonoxsupports the favorites/preset buttons of the iRadios. Due to technical challenges (seethis comment) only one favorites list is created for all devices by default. This means that a created favorite is available on all devices which are connected to the same server.
Separate favorites 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 FileBy default,xonoxwrites its configuration and station-list to a file calledxonox.confinside the user's home directory. If this causes problems on your system, you can specify the storage directory using the--config-dirparameter.Experimental FeaturesPer-Device Bookmarks/Favorites/PresetsYou can disable the global favorite-list by setting the propertyuseGlobalPresetListtofalse: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, setuseGlobalPresetListtotrue.DevelopmentPoetryis used to build and package this project:# install dependenciespoetryinstall# run testspoetryrunpytest# run xonoxpoetryrunpython-mxonox# create packagepoetrybuildChangelog1.0.1FixedManagement API: Get station and station-list does not work1.0.0Use semantic versioningAdded compatibility with Flask >= 2.3.0UsePoetryfor building and packaging the project0.0.7.2Added support for preset-buttonsOrder stations alphabetically0.0.6FixedManagement API does not return JSONFixedNon-unique station-IDs0.0.5BREAKING CHANGEIf the service shall bound to a specific ip-address, it must be provided via--hostand not the positional parameter like in previous versions.Added possibility to configure the location ofxonox.configvia command-line parameter--config-dir.Fixed 'config not found'0.0.4 (Withdrawn)Added persistence of the station list.0.0.3First publicly available release(c) 2023 TillW - Licensed to you under the AGPL v3.0