Skip to main content

Pyradios

Upload Python Package
Python package

A Python client for the Radio Browser API, allowing users to search and filter thousands of online radio stations.

📥 Installation

Install pyradios via pip:

pip install pyradios

🚀 Usage

Basic Example

from pyradios import RadioBrowser

rb = RadioBrowser()
results = rb.search(name="BBC Radio 1", name_exact=True)

print(results)

Sample Output

[
  {
    "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
  }
]

🔍 Faceted Search with RadioFacets

What is RadioFacets?

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)

Example: Using RadioFacets

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

Explanation

  • 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.

Example Output

53768  # Total available stations
398    # Stations in Belgium
108    # Dutch-speaking stations in Belgium
53768  # Reset back to all stations

📖 Documentation

To explore all available methods and options, use Python’s built-in help() function:

from pyradios import RadioBrowser, RadioFacets

help(RadioBrowser)
help(RadioFacets)

🛠 Development Setup

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]

✅ Running Tests

Execute the test suite using pytest:

pytest

📌 Release History

  • Work in progress

📄 License

Distributed under the MIT License. See LICENSE for more details.

👥 Contributing

Contributions are welcome! Follow these steps to contribute:

  1. Fork the repository (https://github.com/andreztz/pyradios/fork)
  2. Create a feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add feature fooBar')
  4. Push to your branch (git push origin feature/fooBar)
  5. Submit a Pull Request

📧 Author: Andre P. Santos – @ztzandre – andreztz@gmail.com

GitHub: https://github.com/andreztz

Metadata

Release files for pyradios 2.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyradios 2.1.1
File Size Uploaded
pyradios-2.1.1.tar.gz 15.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyradios 2.1.1
File Interpreter ABI Platform
pyradios-2.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 25.4 kB

Release files / pyradios-2.1.1.tar.gz

Download URL pyradios-2.1.1.tar.gz
Size 15.0 kB
Tags Source
SHA-256 checksum
How to use checksums
15101dd4cf09648b2880b6bf5bbf0841d74cc46d19f2d00ff88895b4753d7e9e
BLAKE2b-256 checksum
How to use checksums
0cee42f40727e6eacaeb6a4ae257e6bead4761c2c217eb8ae3585ef94481e062
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 28, 2025.

Transparency log

Release files / pyradios-2.1.1-py3-none-any.whl

Download URL pyradios-2.1.1-py3-none-any.whl
Size 10.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e19f24163c379f7cdb867b44d49598c2dc3600d5461f047d26ca8e71c0cd9858
BLAKE2b-256 checksum
How to use checksums
3a1189dd15448a55406f1c1f01fc648268639f0312fcdca150e1d3e5f94d69ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 28, 2025.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page