Podcasting Plugin for Movable Type

Overview

The Podcasting Plugin for Movable Type allows users to easily link to and include MP3 at any URL in their Movable Type blog and to manage those podcasts as assets within Movable Type's asset management system.

Download

Features

  • Link to any podcast on the Internet. All you need is a URL.
  • Let the plugin automatically extract the content type and content length of the podcast being linked to.
  • Automatically embed a streaming, flash based MP3 player into your posts to allow your readers to listen to your content easily.
  • Manage podcasts as assets within Movable Type's asset management system.

How it Works

Once a podcast is in Movable Type's asset management system one can then use Movable Type's default template tags to encode podcasts as enclosures within RSS and Atom Feeds.

Installation

Before we proceed, make sure each of the following prerequisites have been satisfied.

Prerequisites

  • User has MovableType 4.01 or greater installed
  • User has LWP installed

Instructions

To install this plugin follow the instructions found here:

http://tinyurl.com/easy-plugin-install

Adding Podcasts to Your Feeds

Some of your feeds must be edited manually to make this plugin fully compatible with podcasting services and people wishing to subscribe to your podcasts.

Atom Feeds

The following can be inserted anywhere within the <mt:Entries> tag within your Atom feed. While iTunes supports Atom, the RSS feed is recommended as it is the most well documented format for iTunes and podcasting support (see below).

<mt:EntryAssets>
<mt:SetVarBlock name="assettype"><mt:AssetType></mt:SetVarBlock>
<mt:if name="assettype" eq="podcast">
    <link rel="enclosure"
         type="<mt:AssetMimeType>"
         title="<mt:AssetLabel>"
         href="<mt:AssetURL>"
         length="<mt:AssetProperty property="file_size" format="0">" />
</mt:if>
</mt:EntryAssets>

RSS Feeds

See download links below.

Licensing

The Podcast Plugin for Movable Type is available for free but must be used in accordance with the terms of your Movable Type license (either free for personal use, or for commercial use when used in conjunction with your Movable Type Commercial License).

The Flash Player is bundled with this distribution, but should be licensed separately if you intend to use this plugin for commercial purposes.

Support

Support is provided through Movable Type's forums.

33 Comments

Nice one Byrne. To make it easier to install, I have packaged up your podcasting feed templates. Get the MT4 Podcasting Templates here and then install them easily with Template Installer.

Hello Byrne,

I tried it, and it looks good. I can point to .mp3 files. But, when I tried to point to .ogg file, no luck. It says the file could not be found.

So, does it only work for .mp3 audio file?

What this really needs is a way to upload an mp3 via "create entry" and embed the flash player automatically when you click finish. That would ROCK! :)

Good plugin though! Even if the word podcasting does make me cringe.

Hey Byrne, reading the licensing on this, is there an open source license on it? Or, is it simply freeware? Thanks, Bud

I am sorry it was not clear. The podcasting plugin has been donated to the Movable Type Open Source Project. As such, it is licensed under the GPL v2.

Hi Byrne, I've kicked the tires on this a bit using the 12/24 nightly of MTOS. The plugin seems to have successfully installed. Here's what I understand it is supposed to do:

  1. Scan the entry for URLs pointing to identified media files. Currently only mp3 is supported.

  2. Insert assets corresponding to those media files into MT and associate those assets with the entry.

  3. Insert a player into the published entry (!?) for the mp3 file.

My test case is here:

http://budgibson.com/home/archives/2007/12/a-test-podcast.shtml

Currently, testing for 3 on my MTOS nightly, no player is inserted for the mp3 case. I have not yet tested for 2.

Considering my own use case documented here:

http://wiki.movabletype.org/Podcasting

I have simple changes that would make the plug-in usable for me if still a bit far from ideal. Here they are:

  1. Make the file types scanned configurable. I would imagine that those file types include mp4, jpg, flv, swf, etc. In the configuration, I would like to make labels for each type of asset such as mp4version, thumbnail, flv version.

  2. Don't bother with trying to insert a player. Just make the files available as assets associated with the entry.

From my perspective, a much better strategy would be to stop scanning for media files in the entry source altogether and instead provide an ajax form on the entry for associating files with the entry. I realize this may be easier said than done since there is no entry to associate files with until the entry is actually published. I would leave all insertion of assets into entries, etc. to template authors.

The ideal plugin for me would simply allow me to associate any media URL with an entry and then use template tags to construct html pages and feeds as I deem fit. Either fix I propose would get me closer to this goal.

BTW, I am posting this note to the podcast wiki page I reference above. It is not intended as a demand on you, but rather as feedback from a user to move the ball forward for whoever might choose to develop it. I appreciate the work you did on this and your generosity in donating it to MTOS.

I looked at the source of the plugin and determined that it created a form somewhere in the entry interface. I kept on going back to the entry screen trying to figure out where that menu could be. Finally, I found it under the create menu.

At this stage, I may be able to make slightly more informed comments regarding the plugin. Here they are:

  1. LWP is nice but not necessary here. It provides an automated way to get certain metadata. I suspect one could make it optional.

  2. If you wanted to create a custom entry screen say for video podcasting with different video types and flip poster pictures covering the video, it seems you could modify the plug-in's template to collect that information.

  3. You would have to also modify some internals to create the new assets.

  4. It is not entirely clear that you want to insert the asset information to create the podcast directly in the entry.

I really tried my best to get this plug-in to work for me. It kinda did, butonly when I used the standard RSS feed. I tried to figure out what was causing the atom feed not to work but was never able to figure it out. It will parse all entries until it hits the one with the podcast. When I check my Atom RSS feed I see 2 entries and none of my older ones. When checking the actual source of the feed, it is indeed in there though.

Also when I link to a podcast, the asset manager uses my mt-static path but doesn't append a "/" at the end. I've run my mt-static path without the "/" at the end all this time with no problems. Is this a bug or should I be appending the "/" to the end of my mt-static path?

Hope this made sense!

Okay after a few more minutes of comparing code I noticed things were different all over the place when it came to the atom feed:

On this page: http://www.movabletype.org/documentation/examples/podcastatomfeed.txt

The Atom code reads:

 <mt:EntryAssets>
 <mt:SetVarBlock name="assettype"><mt:AssetType></mt:SetVarBlock>
 <mt:if name="assettype" eq="podcast">
 <link rel="enclosure"
 type="<mt:AssetMimeType>"
 title="<mt:AssetLabel>"
 href="<mt:AssetLink>"
 length="<mt:AssetProperty property="content_length" format="0">" />
 </mt:if>
 </mt:EntryAssets>

But on your Atom feeds code on this page it reads:

<mt:EntryAssets>
<mt:SetVarBlock name="assettype"><mt:AssetType></mt:SetVarBlock>
<mt:if name="assettype" eq="podcast">
<link rel="enclosure"
type="<mt:AssetMimeType>"
title="<mt:AssetLabel>"
href="<mt:AssetURL>"
length="<mt:AssetProperty property="file_size" format="0">" />
</mt:if>
</mt:EntryAssets>

But this is the only code that worked inside of an Atom feed for me:

<mt:EntryAssets>
<mt:SetVarBlock name="assettype"><mt:AssetType></mt:SetVarBlock>
<mt:if name="assettype" eq="podcast">
<link rel="enclosure" type="<mt:AssetMimeType>" title="<mt:AssetLabel>"
href="<mt:AssetURL>"
length="<mt:AssetProperty property="content_length" format="0">" />
</mt:if>
</mt:EntryAssets>

Which is the correct one? I'm hoping it's the last one since it was the only one that seemed to work in my feeds.

The of the property called "content_length" is correct.

Is there any way to use this plugin with typepad blogs? I've been searching for something worthwhile but have come up empty handed. In fact, I'm very, very disappointed with Typepad's lack of reasonable support for podcasting (like podpress for WP).

So, if I understand it correctly, you must add the podcast .mp3 file as an Asset for it to be included in an tag?

Is there any way, in a future version, it can automatically look for a linked .mp3 in the entry text, and make that the enclosure?

I don't use MT's entry-creation tool to create posts, instead using a desktop-based application.

Byrne,

We use MTEnclosures currently by Brandon Fuller. One reason we stay with it is that it has the ability to include and exclude specific rules.

i.e.

We have multiple media types per post, but only want one delivered by the podcast RSS.

You have been on Online Tonight and you know we have 100k downloads a week, so we need that function before we can move to MT4.

Any chance to add these include / exclude functions?

It would be nice if this plugin can 'watch' a certain folder for uploaded mp3's. I'm creating a website for a client and he works with very large mp3 files which cannot be uploaded through the regular mt-interface. This would be a nice way to do it, however he must learn how to upload it first by ftp and then finding the right way to link it. Which is possible, weren't it for the fact that isn't that much a computer guy...

If a folder can be watched so that when a file is uploaded and automatically be added as an asset this would make things somewhat easier.

I manage a Movable Type 4.2.1 Enterprise site for a school district in NJ, and we make use of your podcasting plugin with a number of our staff and student blogs.

Just wanted to share some podcasting 1.1.1 issues: Under MTE 4.2.1, when you upload a picture (jpg png gif) using the asset manager, the podcasting plug-in treats the image like a podcast asset. Example here http://www.mcvsdtech.org/images/truncatedwithmediaprefs.jpg

Also, the lightbox that pops up to allow editing of such image alignment and options is cut-off when using firefox, safari latest builds on a Mac, same deal with Win. A cosmetic issue, but this also changed since we upgraded to 4.2.x with podcasting 1.1.1 enabled (see same image).

If I disable podcasting 1.1.1, all is well, the upload file lightbox is not cut-off, and of course no podcasting preferences appear in the dialog box either. Example here http://www.mcvsdtech.org/images/podcastingplugindisabled.jpg

Other than these two visual issues, the plugin itself works great, is there any place I can check to adjust the default size of the lightbox or a way to hide podcasting settings (such as "Contains explicit material") when uploading an image file?

Thanks, -Chris

Byrne,

Example here http://www.mcvsdtech.org/images/truncatedwithmediaprefs.jpg

That is how it looks on MT 4.23 and Podcast 1.1.4, too. With 1.1.1 I could see everything but the check box that allowed you to open the thumbnail into a full sized image in a new window.

Now I can't get the the create thumbnail checkbox.

This renders this not very useful at all. I am going to go tinker with the template and see if I can do something to make it work.

Ken

Byrne,

I took out Subtitle, changed the RSS template to not use the Subtitle field (just placing description in the itunes:subtitle tag) and changed the Description text area to be one line.

Doing all that, the dialog is now completely usable, down to the "save these changes for next time" check box.

Ken

Byrne, it'd be great if you mentioned in bold near the top of this page that the Podcasting plugin isn't for uploading files to be hosted on the same server as the MT install as would normal assets within the core of Movable Type.

For novice podcasters, such as myself, I think that this scenario is what they would expect a podcasting plugin to do.

Hi have these unresolved discussions moved to another forum? I share a couple of the questions above.

many thanks, Mark

Byrne,

Why does your plugin write the feed with the enclosure tag if the podcast is a AAC file and not write it if it is a MP3 file? I am to assume it has something to do with the class="mt-enclosure mt-enclosure-podcast" on the form tag.

As much as I like iTunes, I know many who don't, and I would like to write a separate podcast feed for an MP3 version of our podcast. Is that possible?

Thanks,

Ken

Okay, the YUIEditor is the culprit here.

How do I construct the itunes:category tag with your plugin tags? I could not get it to work, so I just hard coded it:

<itunes:category text="Sports &amp; Recreation">
<itunes:category text="College &amp; High School" />
</itunes:category>

How do I do that with MTiTunesCategories, MTHasiTunesCategory, and MTiTunesCategoryName?

And why is that not on your template anywhere, if the template tags exist, and I am able to select the category/subcategory from the plugin preferences?

I just installed this plugin on MT 4.3, and when I try to add a Podcast asset, I get the following error from MT:

"Can't use string ("") as a HASH ref while "strict refs" in use"

Byrne, congratulations for an excellent plugin!

I'm already successfully using it for some time.

The only function that didn't work for me was the file size grabbing.

In order to make it work, I had to connect via phpmyadmin and change the asset from podcast to audio, the provide the extension, file name, clone the asset url to asset file path and finally replace the web site url on the asset url and asset file path with "%r/".

With this trick I've been able to have movable type read the asset file size and display it for me.

Obviously, I've changed the coding to look for an "audio" asset, not "podcast".

I've also integrated a couple of different players.

Excellent work mate!

Thank you, Mihai Bocsaru

Movable Type Consultant

Hi!

I just upgraded my MT install to 4.32 and all of a sudden I am getting this message any time I try to publish my RSS feed:

Statement has no result columns to bind (perhaps you need to successfully call execute first) at /chroot/home/*/**/html/MT/extlib/Data/ObjectDriver/Driver/DBI.pm line 154.

Any ideas as to what could be causing this?

Thanks in advance!

Mike, your problem seems to be generated by the upgrade process.

How have you upgraded it?

Also, you may like to try to connect to your database using phpmyadmin, check all the tables and run "CHECK TABLE".

That way you would see if there are any issues and then you could select the damaged tables and run the "REPAIR TABLE" commands.

These two commands are drop-down menu choices once you're inside phpmyadmin.

Hope it helps!

Thanks for the tip! Unfortunately that doesn't seem to be the problem as I had previous checked/repaired the MT mySQL databases (so when I run it just now everything returns OK).

Thank you so much for the post, this was just the thing I needed to read!!!

Thanks for the awesome article this is just the thing I needed to see!

Does this work in MT5?

Great plugin! I will definitely put this too use. Thanks for sharing. I really appreciate it. Keep it up!
CLEAR Wireless Internet

Thanks for the plugin. It's just what I needed!

Leave a comment

what will you say?


Recent Comments

Close