A Python client for the Radio Browser API, allowing users to search and filter thousands of online radio stations.
Install pyradios
via pip:
pip install pyradios
from pyradios import RadioBrowser
rb = RadioBrowser()
results = rb.search(name="BBC Radio 1", name_exact=True)
print(results)
[
{
"changeuuid": "4f7e4097-4354-11e8-b74d-52543be04c81",
"stationuuid": "96062a7b-0601-11e8-ae97-52543be04c81",
"name": "BBC Radio 1",
"url": "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p",
"homepage": "http://www.bbc.co.uk/radio1/",
"tags": "bbc,indie,entertainment,music,rock,pop",
"country": "United Kingdom",
"countrycode": "GB",
"language": "english",
"codec": "MP3",
"bitrate": 128
}
]
RadioFacets
extends RadioBrowser
by providing faceted search functionality. It allows you to filter radio stations by various attributes such as:
- Tags (
tags
) - Country Code (
countrycode
) - Language (
language
) - State/Region (
state
) - Audio Codec (
codec
)
from pyradios import RadioBrowser, RadioFacets
rb = RadioBrowser()
rf = RadioFacets(rb)
print(len(rf)) # Total stations available
rf_be = rf.narrow(countrycode="BE") # Narrow by Belgium (BE)
print(len(rf_be))
rf_nl = rf_be.narrow(language="dutch") # Further narrow by Dutch language
print(len(rf_nl))
rf_reset = rf_nl.broaden(countrycode="BE", language="dutch") # Remove filters
print(len(rf_reset)) # Back to original count
narrow(**params)
β Adds filters and narrows results.broaden(*keys, **params)
β Removes filters and broadens results.len(rf)
β Returns the number of stations matching the filters.rf.result
β Stores the list of filtered stations.
53768 # Total available stations
398 # Stations in Belgium
108 # Dutch-speaking stations in Belgium
53768 # Reset back to all stations
To explore all available methods and options, use Pythonβs built-in help()
function:
from pyradios import RadioBrowser, RadioFacets
help(RadioBrowser)
help(RadioFacets)
Clone the repository and set up the environment:
git clone https://github.com/andreztz/pyradios.git
cd pyradios
virtualenv venv
source venv/bin/activate
pip install -e .[dev]
Execute the test suite using pytest
:
pytest
- Work in progress
Distributed under the MIT License. See LICENSE
for more details.
Contributions are welcome! Follow these steps to contribute:
- Fork the repository (https://github.com/andreztz/pyradios/fork)
- Create a feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add feature fooBar'
) - Push to your branch (
git push origin feature/fooBar
) - Submit a Pull Request
π§ Author: Andre P. Santos β @ztzandre β andreztz@gmail.com
GitHub: https://github.com/andreztz