Hi there

I'd like to offer the ability for my site users to upload and distribute their podcasts. I confess I know nothing about them, so how would I configure Drupal to make this possible? Is it a particular module to install or something?

Many thanks in advance,

Neil.

Comments

karl sf’s picture

Podcasting is essentially syndicating audio or video files, think RSS with attachments, or TiVo for the internet. I would suggest getting familiar with subscribing and downloading and listenting, as well as writing your own xml file so you know what the process is. Then you will better be able to see how drupal can facilitate certain steps in the process. For more info see:

See Bloglines, a web based RSS reader. http://www.bloglines.com/
PodFeed: www.podfeed.net
OR
Free podcasting software (iTunes, iPodderX for Mac, iPodder.NET for Windows

For more on podcasting see: http://en.wikipedia.org/wiki/Podcasting

Are you asking:

1. For users to be able to subscribe to feeds in drupal and then launch the audio file? So new functionality for the aggregator essentially.

OR

2. Are you asking to have drupal set up the syntax of the .xml file, and allow users to upload new episodes while at the same time updating the xml file.

The iTunes specs should be met, and they have some tags that are not used by other readers.

I could help with requirements, steps, onscreen instructions and testing. My php is minimal, so I could learn working a project like this. Any module developers want to work on this, or have already?

See my podcast page at http://yoganexus.com/podcasts/yogatalk/index.html

Karl Erb
Communications Strategist
Information Architect, User Interface Designer

NeilMcEvoy’s picture

Hi Karl

Basically all I'm after is: i) visitors to the site can access and play members podcasts, and ii) assuming members have the tools to create the podcast file, they can then use my site to upload/distribute the file.

What I don't really understand is what is 'special' about a podcast file that means it needs something more than just the ability to upload the file? Ie if the member can upload files, then if they upload the podcast file so it can be clicked on, what else is missing to make it work as a podcast? And is this a module that can be installed to make it work?

Cheers, Neil.

rolymo’s picture

There is nothing stopping you doing what you suggest with non-podcast methods. You describe a system that means users must visit the site and click a link to manually download a file. That isn't really what makes a podcast.

What makes a podcast different from a regular audio file is that new episodes (of subscribed series) appear automatically on iPods, without any real effort on their owner's behalf.

From the end user perspective, a podcast is maintained automatically. When they start iTunes, any podcasts that application is subscribed to will be automatically searched for new episodes. If there are any, they will be downloaded. Next time their iPod is connected, the episode will be transferred automatically.

From the podcaster perspective, the episode files have to be created and uploaded as you describe - but must also be added to an xml file that iTunes is connecting to. That's how iTunes gets to know about new episodes.

If I understand your needs correctly, you are looking for the functionality to allow podcast creators the ability to upload their files as they would upload any other file. To make it a podcast, though, someone (either you or the podcast creator) then needs to maintain the xml file (always the same URL!) that listeners can set their iTunes towards.

It doesn't sound so hard to set your website up to do that. It sounds like you have it set up to receive uploads. The main thing to do is to read up on the xml feed - which would be the same for any system (not just Drupal).

I just Googled for "create podcast xml" and got this page:
http://www.podcast411.com/howto_1.html

It looks like it might help you out.

Finally, you have to tell people the address of the xml file - effectively the "podcast address" - for their iTunes.

NeilMcEvoy’s picture

Thanks rolymo. So I think I understand, the key factors are:

- Podcasts, and their associated devices, make use of RSS to provide the address location to poll for updates to that feed, so as to download and use new podcast updates posted there

- You need to enhance the RSS feed in some way so as to make it possible to distribute the media file appropriately (enclosures etc.?)

Is that right?

Many thanks, Neil.

rolymo’s picture

Looks about right - except I'm not sure about your use of the word "enhance". It suggests you want to add podcast information to an existing RSS news feed from your site. I'm not sure you can have that dual functionality.

You probably want to be looking at supplying a seperate feed just for podcasts. If there are not too many updates, that could be a manual task to get things rolling - but there is mention in these forums of a proposed Drupal module to perform the job for you.

Related subject:

Podcasting was a technology that was driven by the community, ie external to Apple. It looks like Apple are being proactive in "photocasting", though - hinting at a possible release of iPhoto for Windows just like they did for iTunes*. You can expect to see an automated method of sharing images before too long - based on similar uses of XML/RSS as podcasting. This could become more widespread since almost every computer user produces content - at much greater frequencies - compared with audio/video content. Something to look out for, maybe.

* iTunes for Windows was a necessary move to enable iPod sales to Windows users. Now the iPod has photo/video functionality, it seems logical for them to do the same with other supporting software.

rob101’s picture

There's a podcast thread over there: 40559

If you're looking for Karl's 2nd suggestion, I use Narkoba's podcast module, some features of which I like and some of which I don't use. I modified the php to be iTunes compatible , you can check my XML works by subscribing to:
http://freshdynamics.net/subscribe or search for Fresh Dynamics in the iTunes directory.

What functionality would you need on your site?

laken’s picture

Rob101 -

I'm trying to use Narkoba's new podcast module (v. 2 beta I guess) and I'm finding that some of the feed syntax is not working with iTunes music store. Would you be willing to share your modifications to the module? I'd be happy to share what I've learned as well.

Thanks!

Patrick Nelson’s picture

alaken,

Could you tell me where you found Narkoba's podcast module? I can't seem to find it anywhere

Regards

Patrick

rob101’s picture

Edit:
OK, I've just seen Narkoba's new module is here:
http://www.narkoba.be/narkoba/?q=node/185

I'm going to try running that on my dev site, as he says it's fully iTunes-ed up. Should be be 4.7 ready too, I guess.

Orig post:
Sorry for not seeing your post earlier.

I've never learnt any php, so all I know is what I've gained by looking through other people's code.

I didn't bother to comment my code as I made changes, so I don't know what I added. It also seems that the site that originally hosted the module is gone, so I've not got an original for comparison. Ooops.

NB: There's quite a lot of this module that I don't use as I don't need it, and quite a lot that I don't use because it doesn't deal with items the way I would like to.
I'm about to relaunch my site, new theme, new functionality, etc - so I'm looking to change the way I do this too. As easy as it ought to be, I just can't find anything that will handle podcasts 'properly' in Drupal.

(And yes, I'm more than willing to be asked 'what do you want that Drupal can't do?' - as someone will probably be able to tell me exactly how to do it!)

Still, here's some bits that should help you get you on your way:

Search for this line:
$channel = array_merge($channel_defaults, $channel);
and follow it with:

  $output = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
  $output .= "<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC \"-//W3C//ENTITIES Latin 1 for XHTML//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent\">]>\n";
  $output .= "<rss version=\"". $channel["version"] . "\"  xml:base=\"". $base_url ."\" xmlns:itunes=\"http://www.itunes.com/DTDs/Podcast-1.0.dtd\">\n";
  $output .= format_podcastrss_channel($channel['title'], $channel['link'], $channel['description'], $channel['developer'], $channel['pubDate'], $channel['lastBuildDate'], $channel['image'], $channel['itunes_author'], $items, $channel['language']);
  $output .= "</rss>\n";

Also, make sure that the following is a few lines below, in the section:

  $output .= ' <itunes:author>'. check_plain($itunes_author) ."</itunes:author>\n";
  $output .= ' <itunes:image href="'. check_plain($image) .'"/>';		
  $output .= ' <itunes:subtitle>'. check_plain($title) ."</itunes:subtitle>\n";
  $output .= ' <itunes:summary>'. check_plain($description) ."</itunes:summary>\n";

The xml / rss works much more nicely if you find:
* Displays an RSS podcast feed from podcast with nid = $nid.
and then in the next section change or add these:

  	$channel['link'] = "http://freshdynamics.net";
	$channel['itunes_author'] =  "Produced and presented by Rob";  

and edit to your taste.

Anonymous’s picture

Rob101--

Where do you make these edits? Are they in the module or in drupal core files?

rob101’s picture

These changes were for the podcast.module.

I've just installed a new 4.7 rc3 site, and I'm using the audio module to handle the files instead. Drupal's automatically generated RSS feed is good enough for a podcast, as it correctly handles the enclosures. A small change to couple of core modules also makes sure the iTunes tags are in there correctly as well - but I'm going to try doing this through use of a module instead.

Anonymous’s picture

I am using 4.6 rc3 as well, where would I put in the itunes tags? I've looked at different files, none of which I can make the edits in.

//---------
3to1 Studios, LLC | http://3to1studios.com

rob101’s picture

This is a horrible hack. I wouldn't suggest using this, unless you want a quick & temporary fix.

Look in common.inc about line 710. Find the <channel> tag.
I added the following code after there.
If we are creating rss for our podcast feed, then we want to change the existing channel tags and add some new ones, so my code looks like this.

	if ($title == 'Fresh Dynamics - Archive') { // checks if this is the podcast
    $output .= " <title>Fresh Dynamics</title>\n";  // I want a generic title for my feed
    $output .= " <link>http://freshdynamics.net</link>\n"; // and a generic link
    $output .= '<image><URL>' . file_create_url('happymonkey.jpg') . "</URL></image>\n"; // here's my logo (in my 'files' folder)
    $output .= "<itunes:author>Produced and presented by Rob</itunes:author>\n"; 
    $output .= '<itunes:image href="' . file_create_url('happymonkey.jpg') . "\"/>\n"; // probably use the same image - iTunes likes then about 300x300 I think
    $output .= '<itunes:summary>' . check_plain($description) . "</itunes:summary>\n"; // Takes the teaser as the podcast description.
    }
	else { // here's the original tags, for all the feeds that aren't podcast.
    $output .= ' <title>'. check_plain($title) ."</title>\n";
    $output .= ' <link>'. check_url($link) ."</link>\n";

}

This works for me, but because the audio module doesn't give smart teasers that were suitable for the podcast description, I had to edit the audio.module and node.module to get this.

I'm just working on a block to give links to my recent podcast items.
If there's any interest, I'll post the whole lot up.

thomasmuirhead’s picture

there is definitely interest