Podcast Downloader

The idea

I added a little commandline tool to download podcasts from rss feeds. There are some good players for podcasts, e.g. Miro and Juice, however these aim towards people watching/listening to podcasts on the PC. I watch podcasts on my XBox using XBMC playing from a network share. Audio podcasts I either play with my network radio or mobile mp3 player. Now what I needed was a tool scanning rss feeds for new podcasts and download them to a specific location. I run the attached tool as a scheduled job at night. It will perform the downloading operations.

Version History

  • v1.1
    • Added DailySID support 
    • Added graceful handling for failures on podcast downloads/parser errors
    • Added download/parse display
    • Filenames with more than 100 characters will be considered invalid and changed to a name with the current date and a sid.
    • Question marks in filenames will be replaced by underscores.

Installing/Configuring the Downloader

Extract the archive to any directory. There are two configuration files used to set it up.

PodcastDownloader.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- Command used to download an item. Known placeholders are:
         {{URL}} and {{TARGET}}
    -->
    <add key="downloadCommand" value="curl.exe --progress-bar --location --output &quot;{{TARGET}}&quot; {{URL}}" />
  </appSettings>
</configuration>

The Downloader does not perform downloads itself but it generates a batchscript to get the job done. The reason why I did it like this is, that sometimes you will not have the direct download location embedded in the rss feed, but get a redirect to it. I did not want to handle this stuff myself. Furthermore this gives you options to easily get things like proxies or even scriptable download managers integrated if you desire to. If it's ok to you to stick with curl, you can leave it as it is.

sources.xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<sources>
  <source name="The Digg Reel" type="Revision3" url="http://revision3.com/diggreel/feed/Xvid-Large" lastItem="/diggreel/0095/diggreel--0095--jackedup--large.xvid.avi" directory="c:\dl" />
  <source name="Diggnation" type="Revision3" url="http://revision3.com/diggnation/feed/Xvid-Large" lastItem="/diggnation/0227/diggnation--0227--interruptions--large.xvid.avi" directory="c:\dl" />
</sources>

This file defines the rss feeds to scan. I have to admit that I'm not a pro in rss specifics. I tested with Revision and two other rss feeds. That's why the rss type is named "Revision3" by now. If you find any rss that does not work with the downloader, you might want to send me the url or implement it yourself. I'm not sure whether I will tweak this tool further than what I need myself.

Each source contains the following information:

  • Name, this has no special function
  • Type, is always "Revision3" by now
  • Url, Url of the rss feed
  • lastItem, guid of the last item retrieved. when left blank, the complete cast is downloaded
  • directory, directory to save files to

Using the Downloader

To start the downloader, run "run.cmd". This will first execute PodcastDownloader.exe which scans sources.xml and generates download.cmd. Download.cmd will then execute curl to retrieve the pending podcasts. 

Downloads 

PodcastDownloader.zip (414,99 kb)

PodcastDownloader-Source.zip (8,05 kb) 

Final Words

I hope you found this tool/post somehow useful. Feel free to play around with it. You may modify/use the source for your own projects. Please give me a mention if it helped or inspired you.

 

About the author

for comments and suggestions contact:

 

Month List