Since I am listening to shows from so many different radio stations, it would be difficult to remember which times to tune into each station. So I have set up a computer to do it for me. I'm using a Raspberry Pi 3 B+ that I had lying around, but any computer's built-in task scheduler could be set up to do the same. The only additional software would be the open-source stream recorder known as ffmpeg.
This is one of the most time-consuming parts of the process, but it can also be a lot of fun if you stumble on a particularly good station, like WOBC. They have a great lineup with diverse programming, clicking on a show opens a page with a show description (some smaller stations don't describe their shows, so you have to take a guess based on the show title) and the schedule displays well on smaller screens. I pull the NPR and college radio station lists for a state from wikipedia, open each station in its own tab, then close the tab once I've reviewed the schedule.
Sources online say you can look through the page source to find links to the stream, but I've found the easiest way is to open the browser's developer tools, click the network tab, then click the play button on the radio station's website. There will be a bunch of resources that show up in the side pane, but at least in Chrome, the stream will show up as a green square with a play icon inside it. Sometimes, clicking the Play/Listen button on the website will open a new page, so it might take some trial and error to get the stream to play on the tab where the developer tools are open. I've included a list of the streams I've saved here.
I run the url through ffprobe (included with ffmpeg) on the command line to find the codec being used. A lot of the streams are using .aac as the encoding, which should be compatible with .mp4, but I get playback errors when I try to save those streams as an .mp4 or .m4a. It mostly works for me to save them as .aac, but my player doesn't accurately display the total length of the file.
Since I'm using a Linux system, I schedule all the recordings through cron. A downside to using cron is that the system must be awake for the job to process. Macs, since they are based on Unix, also have cron built in, but I've read the recommended route is to use launchd. However, the stated benefit of launchd that it catches up on missed tasks after being woken doesn't work with recording live radio streams. Windows has Windows Task Manager as their equivalent to cron. By default, it also doesn't run tasks while the system is asleep, but it may be possible to enable wake timers to bring the computer back up to run the task.
This step can be skipped if you are listening on the system that recorded the show, but it's more convenient for me to listen on my phone. I use RaspController to transfer the files and delete any old ones, but there are most likely equivalent apps depending on what system you are using. There is also the option of having a media server on the recording device.
This part should need no explanation, but I found that using an audiobook player instead of a media player has a few advantages. If you place the radio shows in a dedicated folder, the audiobook player treats each show as a separate chapter of the same book. My default media player would require me to search for each media file separately. Also, the audiobook player keeps track of the progress in each chapter. This is handy when I want to take a break from a show. My media player would most likely drop the progress in the episode. I've been using Simple Audiobook Player in Android. It doesn't show any ads and the interface is, well, simple. Once I'm finished, I delete the file from my phone using my file utility. I use FX on Android.
Something I haven't figured out is the best way to get updates on station schedules. Several of my favorite shows have cancelled and it's making me think about the shifting nature of radio schedules, especially shows that are hosted by students who will eventually graduate. Periodically going back through all the (mostly unchanged) schedules would be a huge waste of time. I guess it's something I have to think about.