Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Join the Federation
Thanks for your interest in indycast. If you are a technical computer person, you can join the federation by reading below.
If you aren't, then feel free to donate and help us.
Indycast works off of a federation of servers which download a radio's webstream, archiving the audio for a given amount of time, and then crafting podcast XML, PLS, or M3U files based on descriptive URLs which get generated by user-input through the frontend at www.indycast.net.
Using these powerful base principles, there's a number of other features such as live radio and reminder emails which can be leveraged.
The server is one multi-threaded script which does all the things necessary:
indy_server.py and its configuration file. All the current stations are in the configs/ directory.
Here's an example configuration file:
[Main] callsign=kpcc long=-118.117447 lat=34.143368 stream=http://live.scpr.org/kpcclive/ port=3499
Callsign ** Required **
The callsign is the station that's being described in this configuration file.
Long/Lat ** Required **
These are important parameters that describe the local time-zone of the station so that when, for example, a user requests a 2pm show, we can convert from UTC time to when the 2pm show aired.
We humans of course don't know these numbers. I use this service where I can type in a location and get these values.
Stream ** Required **
Generally speaking, any publicly accessible MP3 or AAC stream will do. Most radio stations have a "listen with external player" link on their website ... that's probably the link you need. Currently the following formats are supported:
- pls, example: http://media.kcrw.com/live/kcrwlive.pls
- m3u, example: http://22.214.171.124:8000/kdvs128.m3u
- direct mp3 or aac stream
The server has its own readme with installation instructions. Their are also more options supported (with sensible defaults provided) that you shouldn't have to touch. You can see these in the
read_config function in the main server python script.
You should pick a port. I recommend the station's frequency followed by a zero ... such as 8990 for a station broadcasting at say, 89.9
Joining the Federation
curl ip:port/stats on the IP with the sent configuration file and if successful, add the callsign in the indycast.net DNS record and put you on the list as a supported station.
server_query.py -q heartbeat will be hitting you up once an hour to make sure that everything is going OK.
Thanks and welcome to indycast.