Site Map - skip to main content

Hacker Public Radio

Your ideas, projects, opinions - podcasted.

New episodes Monday through Friday.

hpr1362 :: Fixing a bad RSS feed

Perl scripts to modify broken RSS feeds on the fly

<< First, < Previous, Latest >>

Host Image
Hosted by Dave Morriss on 2013-10-22 is flagged as Explicit and is released under a CC-BY-SA license.
Tags: RSS,Perl,podcast,scripting.
Listen in ogg, spx, or mp3 format. | Comments (1)

There have been problems with the podcast feed for "mintCast", apparently as a result of a bug in Wordpress. The feed contains multiple "enclosure" tags containing the same audio over and over again. While the mintCast hosts are looking for a fix I would like to find a local work-around.

I have also encountered a problem with the "Pod Delusion Extra" feed which contains multiple enclosures in some episodes. Unlike the "mintCast" example I don't want to lose these enclosures but want to find a way of repackaging them into individual episodes.

These problems affect some podcatchers, the modified Bashpodder I use being amongst them. To counteract this problem I have written two short Perl scripts to copy and clean each feed before submitting it to my podcatcher.

Detailed notes:


Subscribe to the comments RSS feed.

Comment #1 posted on 2013-10-25T16:40:37Z by Ken Fallon

There is another way

While there usually is another way with perl, this time there is another way with the xslt. This is the xpath will select only the @type where the string is set to "audio/ogg" and then only display the first one.
&lt;?xml version="1.0"?&gt;
&lt;xsl:stylesheet xmlns:xsl="" xmlns:exslt="" xmlns:content="" xmlns:wfw="" xmlns:dc="" xmlns:atom="" xmlns:sy="" xmlns:slash="" xmlns:georss="" xmlns:geo="" xmlns:media="" version="1.0" extension-element-prefixes="exslt"&gt;
&lt;xsl:output omit-xml-declaration="yes" indent="no" method="text"/&gt;
&lt;xsl:template match="/"&gt;
&lt;xsl:for-each select="/rss/channel/item/enclosure[@type=&amp;quot;audio/ogg&amp;quot;][1]"&gt;
&lt;xsl:call-template name="value-of-template"&gt;
&lt;xsl:with-param name="select" select="@url"/&gt;
&lt;xsl:value-of select="'&amp;#10;'"/&gt;
&lt;xsl:template name="value-of-template"&gt;
&lt;xsl:param name="select"/&gt;
&lt;xsl:value-of select="$select"/&gt;
&lt;xsl:for-each select="exslt:node-set($select)[position()&amp;gt;1]"&gt;
&lt;xsl:value-of select="'&amp;#10;'"/&gt;
&lt;xsl:value-of select="."/&gt;

<< First, < Previous, Latest >>

Leave Comment

Note to Verbose Commenters
If you can't fit everything you want to say in the comment below then you really should record a response show instead.

Note to Spammers
All comments are moderated. All links are checked by humans. We strip out all html. Feel free to record a show about yourself, or your industry, or any other topic we may find interesting. We also check shows for spam :).

Provide feedback
Your Name/Handle:
Anti Spam Question: What does the P in HPR stand for ?
Are you a spammer →
Who hosted this show →
What does HPR mean to you ?