Podcasts
Currently, the most common method of distributing audio programs (this works for video programs as well) on the
internet is through podcasts. (http://en.wikipedia.org/wiki/Podcast http://es.wikipedia.org/wiki/Podcast)The way a podcast works for a user is that they run a podcast client (iTunes, Juice - http://juicereceiver.sourceforge.net, gPodder - http://gpodder.org/,
Google Listen, etc) which periodically checks a "feed" for new
material. When the client sees that there is new material
available, it automatically downloads it to the computer, and when it
is ready it presents it to the user so that they can listen to
it. This setup has worked so well because it is very simple for
the user. They don't have to go out to any websites to download
material (or wait while it downloads), it is already there on their
computer. Some of the more advanced clients will even support
synchronizing the feed onto a portable media player such as an iPod or
MP3 player.
On the content producer's side, the most important part is creating the
feed that all the clients check. This feed simply consists of a
file enumerating all the episodes of the show. This file contains
information about each episode as well as a link to the content for
that episode (usually mp3, but ogg is also common). Both the file
for the feed and the content that it point to are usually simply files
that are available for downloading from a web server. On a
periodic basis the client applications will go to the URL for this file
on the web-server, download it, and see if it contains anything
new. To facilitate all this work, the format of the feed's file
is specifically defined.
XML Overview
The file is of a special format called Really Simple Syndication or
RSS, with enclosures. RSS is in turn a type of XML file (the
other type of XML we have seen in this course is SVG) where each piece
of data is contained within tags that specify what type of data it
is.
Here is a very basic example of an XML file:
<?xml version="1.0" encoding="UTF-8" ?>
<users> <!-- This is the list of users in the system -->
<user>
<name>Joe</name>
<address>1234 Hill St.</address>
<phone type="local">456-7890</phone>
</user>
<user>
<name>Jane</name>
<address>4321 Hill St.</address>
<phone type="long_distance">1-123-555-555</phone>
</user>
</users>
XML is defined by data types, each of which starts with a tag that
contains its name, such as <address> and ends with a tag that has
a slash "/" and then the name of the type, such as
</address>. You can see that each type of data can have
three things that it contains: more types of data, the actual data, and attributes of the data, the last two of which I have marked in blue and red so you can see what they are. In addition, there are comments
which can be anywhere. Comments always start with "<!--" and
continue until they reach "-->" to signify the end of the
comment.
http://en.wikipedia.org/wiki/XML
http://es.wikipedia.org/wiki/XML
RSS Feed Definition
Getting back to RSS, it is just a specific format of XML. RSS is
used for Podcasts, but it can also be used for all kinds of other feeds
such as blogs, news articles, photo streams, etc. The basic XML
layout of RSS is the following (when used for a blog), read through it
so that you understand what the tags used in it are referring to.
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>My Blog</title>
<description>What's going on in my life.</description>
<link>http://example.com/blog/</link>
<lastBuildDate>Wed, 23 Mar 2011 14:55:12 -0400 </lastBuildDate>
<item>
<title>Funny Post</title>
<description>This was really funny.</description>
<link>http://example.com/posts/FunnyItem.html</link>
<guid>00002</guid>
<pubDate>Wed, 23 Mar 2011 14:55:12 -0400 </pubDate>
</item>
<item>
<title>A serious post</title>
<description>This is some stuff I've been thinking
about.</description>
<link>http://example.com/posts/SeriousItem.html</link>
<guid>00001</guid>
<pubDate>Tue, 22 Mar 2011 13:20:42 -0400 </pubDate>
</item>
</channel>
</rss>
In this case, we are using five data types for the channel: title,
description, link, lastBuildData, and item. In turn the item data
type has five of its own data types: title, description, link, guid,
and pubDate. This is not a complete list of all the possible data
types that can be used in RSS, there are several more. For the
complete list and explanation, see the RSS specification:
http://www.rssboard.org/rss-specification
The Channel
title - The title for the feed
description - A description of what the feed contains. This can
be long or short and should be useful for a user to determine if they
would find the feed contents interesting.
link - This is a link to a page that contains general information about
the feed (not about any specific item in it). For instance this
could be a link to an archive of past items.
lastBuildDate - When the feed was last modified.
item - Each item contains further information about one specific episode, post, article, etc.
An Item
title - The title of this item
description - A description of what is in this item, this could be very
long. For a blog or news article this could even contain the
entire textual contents. For a podcast, this may contain notes
about the show.
link - This is a link to the item's page
guid - This must be something that uniquely identifies this item.
Once you publish a feed with a certain chunk of text here, you may
never use this again. This is used by the client to determine if
it has already seen this item (and won't need to download it again).
pubDate - The date and time that this item was added to the feed.
http://en.wikipedia.org/wiki/RSS
http://es.wikipedia.org/wiki/RSS
http://www.xul.fr/en-xml-rss.html - Tutorial on building RSS
Podcast Specific
The above RSS example wasn't actually for a podcast, because there
weren't any audio files in it, it was something that would be more
typical for a blog. Below is another example, that adds a key
data type which makes the RSS into a podcast feed.
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>My Podcast</title>
<description>What's going on in my life.</description>
<link>http://example.com/blog/</link>
<lastBuildDate>Wed, 23 Mar 2011 14:55:12 -0400 </lastBuildDate>
<item>
<title>Episode 002 - Funny Story</title>
<description>This was really funny.</description>
<link>http://example.com/shows/ep002_notes.html</link>
<guid>00002</guid>
<pubDate>Wed, 23 Mar 2011 14:55:12 -0400 </pubDate>
<enclosure url="http://example.com/media/ep002.mp3" length="3456789" type="audio/mpeg" />
</item>
<item>
<title>Episode 001 - A serious post</title>
<description>This is some stuff I've been thinking
about.</description>
<link>http://example.com/shows/ep001_notes.html</link>
<guid>00001</guid>
<pubDate>Tue, 22 Mar 2011 13:20:42 -0400 </pubDate>
<enclosure url="http://example.com/media/ep001.mp3" length="1234567" type="audio/mpeg" />
</item>
</channel>
</rss>
You can see that we added the "enclosure" data type to
each item. The enclosure data type doesn't have any actual data
that goes in it, just three attributes that need to be set: the
location of the media file, the size of the media file (in bytes), and
the type (for mp3s this is audio/mpeg).
Show Notes
You may have been wondering what the link in each item points to, since
the audio is contained in the enclosure. In this case you
wouldn't strictly need a link data type for these items, but when you
are creating a podcast it is usually a very good idea to have a web
page that goes with each episode. This web page is usually called
the "show notes" and contains information about what is happening in
the audio. For instance it could contain name (and links to)
songs that were played, information about guests that were interviewed,
links to topics that were discussed, etc. We won't get too far
into that now, since we haven't gotten to the section on web page
creation yet, just know that it is an important part of having a
podcast.
Podcast Generators
If you don't want to mess around with creating your own RSS feeds
(though doing it yourself is highly recommended) there are also several
organizations that will take care of all that for you. Try
searching google for "podcast hosting". If you just want the
tools to generate the RSS feed, seach google for "podcast
generator". There is at least one free software generator that is
available, you can get it at: http://podcastgen.sourceforge.net/
Find Podcasts
Once you have your podcast feed all set, you can give out the URL to
anyone you'd like. However, you may also be interested in getting
a bigger audience, that requires publishing your podcast in a directory
of podcasts where people can go to find them. The biggest
directory of podcasts is the iTunes store (they have special data that
needs to be added into the feed though) but there are several others
that are also good to get into.
http://www.apple.com/itunes/podcasts/
http://podcast.com/
http://www.podcastalley.com/
http://www.podomatic.com/
Getting Podcasts in gPodder
The best client software for podcasts is gPodder. It is available
on Linux (Ubuntu and others), Windows, and Mac, and makes it very easy
to stay up to date with your podcasts.
To start, open up gPodder and go to Subscriptions -> Add Podcast By URL.
Once you have that open, go to the main page for the podcast: http://mediaintro.teeks99.com/podcast/
from there you will see a link for the Podcast's RSS feed. Right
click on it and copy it, then paste it into the box in gPodder.
Now gPodder will go out and get all the information about the
feed. It will find out that there are two episodes available for
download and prompt you to start downloading.
Once the download is complete, it will show you the available audio to listen to.
At this point gPodder will keep checking the feed for more episodes on
a regular basis. Additionally, you could set it up so that it
will automatically synchronize the podcasts to your MP3 player.
This will load the new podcasts to the player for you, and can remove
them from gPodder once you've listened to them.