http://prairiehome.org/shows/ has the archive, and it is kind of sucky to use their player when out on a road trip here on the prairie. I'm not on the same edge of the prairie as St. Paul, but the cellular network isn't exactly top notch on the roads I travel here in SE Indiana. So, I yank down the episodes that I miss the live broadcasts.
Note: the archive only has Sept 2012 onward - http://prairiehome.org/shows/2012/09/ Before that, episodes are Realplayer RAM files on the old archive page.
The APM player is open source.
https://github.com/APMG/APMPlayer
But no need to deep dive the source.
When you open a player page's source, you see a line like this:
var playables = [{"identifier":"apm_audio:\/phc\/2016\/07\/02\/phc_20160702_128.mp3"}];
Looks like the end of a URL, but what is the beginning? It isn't prairiehome.publicradio.org where the page is served from.
Opening the apmplayer-all.min.js, there is:
function(){var d={"apm-audio":{flash_server_url:"rtmp://ondemand-rtmp.stream.publicradio.org/music",flash_file_prefix:"mp3:ondemand",http_file_prefix:"http://ondemand-http.stream.publicradio.org",buffer_time:3,t...},"apm-live-audio"
You get the beginning of the URL for the file. Put two and two together, you get:
http://ondemand-http.stream.publicradio.org/phc/2016/07/02/p...
Now that we have the format and know that PHC is a weekly show, you could directly grab or make a bulk download script.
http://ondemand-http.stream.publicradio.org/phc/YYYY/MM/DD/p...
Note: the archive only has Sept 2012 onward - http://prairiehome.org/shows/2012/09/ Before that, episodes are Realplayer RAM files on the old archive page.