Streamtuner2 is an internet radio browser
Streamtuner2 lists radio directory services like Shoutcast, Xiph, Live365, MyOggRadio, Jamendo. It allows listening via any audio player, and recording of streams via streamripper.
This isn’t yet a proper Python package, but a PYZ application.
It’s primarily here for beta testing.
A few components are reusable, and possibly of interest. (Public Domain, not even attribution required).
The uikit module provides a few Gtk abstractions
- Mainly the TreeView list construction columns() which accepts a column-mapping structure and simpler dict-lists.
- A pixbuf reader from internal PYZ package contents with some auto-decoding.
- Widget wrpaping with background, alignment, hbox packing etc.
The action module contains a few utility functions for converting playlist formats:
- .URL/DESKTOP files.
Channel data models
Furthermore the various radio directory services are implemented mostly as data models. They’re not completely separated from the application. Currently depend on a prepared requests session, an internal config.conf object, and some utility code. But they can be instantiated and used without active GUI components:
sys.path.insert(0, "./streamtuner2.pyz") from channels.shoutcast import shoutcast parser = shoutcast(parent=None) print(parser.categories) stream_list = parser.update_streams("Pop")
Which returns a list of dictionaries, containing title, playing description, genre, streaming url, bitrate, format, etc.
Other available channel modules:
- tunein, etc.
Using them could perhaps be simplified further, properly separated from the main application and custom config instances etc. You know, if anybody indicated any interest…(?)