BashPodder Praise and Roaming Feed Profile

As I’ve been doing some travelling, I’ve had to set up podcast clients on my laptop. Two issues: * It’s a hassle to copy podcast client settings from one PC to another. What I like about a service like bloglines is that you’re free to move between PCs. That’s not so easy with Podcast clients which sit on your PC rather than a web server. * It’s a hassle to install a new podcast client and add all the feeds. I’d like to just have a list of feeds, and tick those I’m interested in. Instead, there’s a whole lot of mousing involved for every single feed. That’s using ipodder and BlogMatrix sparks, haven’t set up .net framework to test the others.

So I decided instead to boot into linux and “set up” bashpodder. Bashpodder config is so simple: just edit a single text file with all the feeds and run it. Bashpodder is a tiny podcast client written by linc, 44 lines of bash elegance. There’s still some issues with certain feeds and torrents, though the contributions on the bashpodder site apparently fix a lot of that.

Also, I wanted a way to permanently track my podcast feeds, so I can have something like the roaming profile that I have on bloglines. So the result was a little mod that wgets the config file from a webserver, and only looks at lines beginning with “http”. I’ll send it to Linc (Mr. BashPodder), but here are the main change if you want it.

The main changes were:

  • Download the config file if a URL argument is specified
  • Read only lines beginning with “#”
  • Also “touch” podcast.log as I encountered an error running it first time (unmodified), if the log doesn’t work.

Here’s the full script after those few changes.


By Linc 10/1/2004

Find the latest script at

Last revision 12/14/2004 - Many Contributers!

If you use this and have made improvements or have comments

drop me an email at linc dot fessenden at gmail dot com

I'd appreciate it!

Ensure podcast.log exists

touch podcast.log

Grab fresh bp.conf from a URL if specified

if [ ! -z $1 ] ; then if [ -e bp.conf ] ; then mv bp.conf bp.conf.old fi wget -O bp.conf $1 fi

Make script crontab friendly:

cd $(dirname $0)

datadir is the directory you want podcasts saved to:

datadir=$(date +%Y-%m-%d)

Check for and create datadir if necessary:

if test ! -d $datadir ; then mkdir $datadir fi

Delete any temp file:

rm -f temp.log

Read the bp.conf file and wget any url not already in the podcast.log file:

while read feed ; do if [ ${feed:0:4} == 'http' ] ; then file=$(wget -q $feed -O - | tr 'r' 'n' | tr ' " | sed -n 's/.url="([^"])".*/1/p') echo -e "---nFrom $feed, downloading:n$file" for url in $file ; do echo "Downloading $url" echo $url >> temp.log if ! grep "$url" podcast.log > /dev/null ; then wget --progress=dot -q -P $datadir "$url" fi done fi done < bp.conf

Move dynamically created log file to permanent log file:

cat podcast.log >> temp.log sort temp.log | uniq > podcast.log rm temp.log

Create an m3u playlist:

ls $datadir | grep -v m3u > $datadir/podcast.m3u

One thought on “BashPodder Praise and Roaming Feed Profile

  1. Pingback: BashPodder mod - add podcasts to iTunes

Leave a Reply