Table of Contents

Podcasting Background

Podcasting was coined by Apple users, but the term is used generically to describe the syndication of media files. Other companies have promoted the term media casting since the syndication process does not rely on the tademarked Apple iPod.

Podcasting Overview

This section will make various references to "aggregators". The most common aggregator is the Apple iTunes application that will allow media files to be played on the computer and will also synchronize the media files to a connected Apple iPod; hence the name podcast. However there are other aggregating applications available and TikiWiki should be designed to support each. iTunes may have unique features (XML tags) that must be supported and fully supporting iTunes may not guarantee other aggregators will work. Careful note should be made of each aggregating application's requirements so that all will be broadly supported by TikiWiki.

The Podcast Process

How are podcasts advertised and updated by iTunes and other podcast aggregating applications?
A podcast is nothing more than a specifically formatted XML file, using the RSS 2.0 definition, that has, in addition to other descriptive data, pointers to media file locations. iTunes and other podcast aggregating applications periodically (e.g. once a day) retrieve the RSS/XML file and look for changes in the file. If new <items> have been added to the RSS/XML file, the aggregating application will download the referenced media file. To enable a working podcast from the user's perspective, a number of steps must occur.

There are no automatic discovery mechanisms for podcasts, podcasts must be advertised directly to the user through other means. Podcasts are advertised in a number of different ways including but not limited to direct links on a web page of the content author; posting to sites like feedburner and the iTunes store; and word of mouth. Once a user finds an interesting podcast advertisement the user must then configure their aggregator to retrieve the associated media files.
One semi-automatic method of finding RSS feeds is by adding elements to web pages that tell newer browsers, like firefox, that the page contains an RSS feed. Yahoo! has a good discussion on how this works.

Aggregator Configuration

Aggregators must be configured with a URL that defines the location of the RSS/XML file that defines the podcast. Some aggregators, like firefox, are quite smart and can automatically recognize RSS feeds. For other aggregators, like iTunes, carefully constructed URLs can trigger the auto configuration (e.g. itpc://FEEDURL) if iTunes is loaded on the browsing computer. All of the aggregators provide a means to manually add a podcast URL. Yahoo has an aggregator as part of myYahoo; This site http://publisher.yahoo.com/rss_guide/promote.php describes how to create an "add to my yahoo" button for RSS feeds.
See also pcast://

Aggregator Media Download

Once the aggregator is told where the podcast RSS/XML file is located, the aggregator will periodically retrieve the RSS/XML file looking for changes. New <item> sections in the RSS/XML file will trigger the aggregator to pull down the media file referenced in the <enclosure> section.

Format of the RSS/XML podcast definition

There are many formats that have come about like:
â—‹ Really Simple Syndication (RSS 2.0)
â—‹ Rich Site Summary (RSS 0.91, RSS 1.0)
â—‹ RDF Site Summary (RSS 0.9 and 1.0)
Check out Wikipedia's RSS page for a good bit of backgound.

But for the most part RSS 2.0 is the choice for those podcasting media files because of its support of the <enclosure> tag.

iTunes Specific Markup

The initial application for the podcast enchancements to TikiWiki is to ensure that TikiWiki podcasts can interwork with the Apple iTunes application (and iPods). The iTunesRSS page is devoted to the study and understanding of the Apple specification and how that specification works in practice.

TikiWiki already supports some of the other formats for basic textual RSS feeds, however for podcasts the initial format will only be RSS 2.0 and the extensions needed for iTunes support. This section attempts to determine the minimum working set of XML elements needed to interwork with various aggregators and specifically iTunes.

Support for feedCreator Updates

Pocasting in TikiWiki is interwoven with the more general RSS support. As a matter of fact, podcasting can be considered just another RSS feed format. The TikiWiki RSS modules consider it that way. As of V1.8 or so, TikiWiki has used the feedCreator.php library. Unfortunately that library seems to be currently unsupported and the latest official version 1.7.2 does not support the podcast RSS elements. There are at least two separate modifications to feedCreator.php that I found on the Internet. Neither one exactly supports all of the elements that I believe are needed. I'm thinking that we need to officially split from the feedCreator.php project and make a TikiWiki specific version. That or start a sourceforge project for feedCreator, but I don't understand all the etiquite surounding a public fork of someone elses project. I guess an email to the feedCreator author is due.

Here are the links that I've found to feedCreator and it's enhancements:
ATOM 1.0 enclosure enhancemen
Hey! I just found new "official" support feedcreator.org. Unfortunately it does not have the V1.7.3 changes for podcasting. Maybe I can ask to merge the changes?
feedCreator V1.7.3 with podcasting support

Adding podcasts to TikiWiki

There are several modules in TikiWiki where file attachments are allowed. Each of those is a candidate for producing podcast compatible RSS feeds. I advocate making podcasts a feature of each of those modules. The basic idea is to provide an additional feature check box for generating podcast compatible RSS 2.0 feeds. I do not like the idea of creating an entirely new type of "file attachments" with its own set of .php files. This would represent a "fork" in the file attachment code causing additional work, and chance for errors, when making future enhancements and security fixes.

Here is a basic question, though: Why can't all "file" oriented RSS feeds just include all of the RSS 2.0 elements? Would that break any non-podcast based aggregators for normal file feeds? For instance, if "all" RSS feeds for all file galleries included the additional elements, would that break any backward compatibility with older aggregators and preclude traditional use of the RSS feed? If the other aggregators simply ignored the unknown elements, then we could offer a feature to turn on RSS 2.0 format for all file gallery feeds, for instance. Otherwise we would need the ability to select RSS 2.0 for each file gallery.

Data Structures

File Galleries
rss_version: Need to store the RSS version for all file galleries and possibly for each file gallery. It is not likely that the site wide RSS version default will work since that covers textual RSS feeds as well as media based feeds.

channel->title: "Tiki RSS feed for the file gallery: " & gallery->name
channel->description: "" ???? Should be gallery->description
channel->link: gallery->tiki-file_gallery_rss.php link for this gallery ???? Should be link to tiki-list_file_gallery.php
channel->language: "en-us"
-channel->copyright: ???? Completely missing
  • channel->lastBuildDate: local time with fixed TZ ???? TZ is a problem
  • channel->generator: "FeedCreator 1.7.3"
  • channel->image->url: "http://site/img/tiki.jpg"
  • channel->image->title: "TikiWiki logo"
  • channel->image->link: "http://site/tiki-view_articles.php"
  • channel->image->description: "<![CDATA[Feed provided by http://site/tiki-view_articles.php. Click to visit.]]>"
  • channel->itunes:title: "Tiki RSS feed for the file gallery: " & gallery->name
channel->itunes:subtitle: "Tiki RSS feed for the file gallery: " & gallery->name
channel->itunes:author: ???? I don't know where this comes from. User that created the gallery?
  • channel->itunes:keywords: "php podcast rss itunes"
-channel->itunes:summary: ????
channel->item->title: file_item->file_name
  • channel->item->link: http://site/tiki-download_file.php?fileId=xx
  • channel->item->description: "<![CDATA[ file_item->description ]]>"
  • channel->item->author: ???? TikiWiki user that uploaded the file?
channel->item->pubDate: file_item->upload_date bad TZ!
channel->item->itunes:duration: I don't know how this is determined
channel->item->enclosure->url: tiki-download_file.php?fileId=xxx
channel->item->enclosure->length: ???? Faked for now
channel->item->enclosure->type: ????

  • Not in the Apple iTunes example
  • Not in the FeedCreator output

-Make channel->itunes:summary same as channel->description
-Set channel->lastBuildDate from the galleries->lastModif field

-Make channel->item->guid same as channel->item->link
-Make channel->item->itunes:author same as channel->item->author
-Set channel->item->itunes:subtitle from the file->name field
-Make channel->item->itunes:summary same as channel->item->description
-Set channel->item->title from the file->filename field
-Set channel->item->enclosure->type from the file->filetype field
-Set channel->item->enclosure->length from the file->filesize field
-Set channel->item->pubDate from the file->lastModif field

File data mappings

Exclude: channel->itunes:subtitle
Exclude: channel->item->itunes:subtitle

Confirmed iTunes Column Mappings

RSSiTunes Column
channel->titlePodcast Column for the podcast feed
channel->item->titlePodcast Column for the podcast item
channel->item->itunes:subtitleDescription Column for the podcast item
channel->item->itunes:summaryDescription Column for the podcast item if itunes:subtitle doesn't exist

File Function Tree


Mapping magic

Now for a little magic. iTunes requires that the item->enclosure->url end in an iTunes suppoted media type extension. Since TikiWiki sends a .php file for the item link, the .php must be converted to the media extension and then rely on apache rewrite rules to put it back to .php. Something like this:

Contributors to this page: michael .
Page last modified on Wednesday 05 of November, 2008 22:19:40 CST by michael.