iTunes に対応した Podcast 用 RSS フィードのテンプレートを書いた。Movable Type 2.661 だとすんなり行かない。って言うかまだ 2.661 かよというツッコミはなしの方向で。
Mobable Type で Podcast する場合,基本は RSS 2.0 のテンプレートを使い,MT-Enclosures プラグインを入れて MTEntryEnclosures タグを追加するだけでよい(Brandon Fuller | MT-Enclosures: A Movable Type Plugin)。
最新版の Movable Type 3.3 で,かつ文字コードに UTF8 を使っていれば全く問題はないのだが,このサイトは MT 2.661 + 日本語化パッチで,しかも文字コードが EUC なので問題あり。工夫が必要である。欲を出して iTunes に登録したときに,きちんと表示されるようにした。
こうして,ますます 2.661 から離れられなくなっていくのであった。どうしよう…。
気を取り直して話を進めることにする。このサイトで公開している RSS 2.0 のフィードに付け加えることも考えたが,Podcast では古い記事も含めて全部表示させたいので,新しくフィードを作ることにした。当然,再構築するテンプレートを増やした分だけサーバの負荷は上がることになるが,仕方ない。
以下がこのサイトで使っている Podcast 用のフィードである。
テンプレート全体を MTConvert2UTF8 で囲んでいるのは,このブログの文字コードが EUC のためだ。iTunes は EUC を解釈しないので,プラグインで対応している(nlog(n): Podcast は UTF-8 で)。
フィードの中で itunes: と dc: で始まるタグを使うので,rss 開始タグには itunes と dc の名前空間を宣言している。
itunes で始まるタグは,アップル - iTunes - Podcast - 技術仕様 を見ながら書いていく。
langage タグ内では,MT 3.3 なら <$MTBlogLanguage ietf="1"$> とするが,MT 2.661 にはこのタグがないため,<$MTDefaultLanguage$> で代用している。もし,<$MTDefaultLanguage$> が何も出力しない場合は,タグを諦めて直接「ja」と書く。
日付の設定を行うのは,lastBuildDate と pubDate タグ内である。MT 3.3 なら <$MTEntryDate format_name="rfc822"$> とするが,MT 2.661 は format_name を解釈せず,属性を書かなかった場合と同じ出力になってしまうので,手書きしている。タイムゾーンは「+0900」というようにタグを使わずに書いている。<$MTBlogTimezone$> の出力は「+09:00」なのだ。残念。日付の「日」は「%e」で指定しているが,実は困ったことがある。「%e」では,日が1桁の場合「空白+数字」になってしまうため,「曜日+,+空白+空白+数字」になってしまうのだ。しかし,RFC822 では,空白が2つ連続してはならないことになっている。この書式で空白を1つにすることはできないのだ。これまた残念。ただし,iTunes は許してくれているようだ。
itunes:explicit には,露骨な表現をしていなければ「no」を指定する。露骨なら「yes」で。
itunes:image には Podcast 用の画像を指定する。300×300ピクセル以上の正方形の.jpg画像をお勧めします
とのことだ(アップル - iTunes - Podcast - 技術仕様)。
itunes:category には,適切なカテゴリを指定する。このサイトの場合は「Music」である。
MTEntries タグでは,Podcast のための記事があるカテゴリと,記事の最大個数を指定している。lastn="0" と指定すると,上限なし,つまりあるだけ全部になる(小粋空間: Movable Type で全エントリーを表示する方法)。
itunes:author と dc:creator タグで2重に作者名を指定している。iTunes Podcast の技術仕様には記述がないが,FAQ/iTunesのポッドキャスト・ディレクトリに番組を登録した場合に、番組の画像や作者名を表示するのはどうすればいいの?:Podcasting Juice に次のように説明されているからである。
作者名|最新のitem要素のdc:creatorタグ内の情報
<$MTEntryEnclosures$> タグには mime_include="audio" 属性をつけておく。この属性がないと,記事の中に画像が含まれていたときに,その画像も enclosure に変換されてしまうからである。mime_include="audio" 属性を指定することにより,enclosure にするのは音声に限定することができる。
これがどのくらい信頼性のある情報なのか分からないのだが,まあいいか。
テンプレートができあがったら,Main Index テンプレートの header 内にフィード情報を追加する。
以上でフィードについては終了である。
ここからは iTunes についての話題。Podcast 用フィードへのリンクとしては,一般的には
でよい。しかし,これを iTunes にそのまま登録すると,iTunes で「→」リンクをクリックしたときに Internet Explorer が開いてしまう。
ここで言う「→」リンクとは,iTunes で Podcast のサイトを選択したときに「Podcast」欄の右端に表示される矢印を指す。この「→」をクリックしたときに iTMS Podcast Directory が表示されるようにするには,iTMS の ID を指定する必要がある(Going My Way: iTMSへのリンクURLをitunes.com以下にして少し短くする方法)。
難しいのは,RSS フィードは iTunes にドラッグで登録きるが,iTMS へのリンクはドラッグではダメで,クリックしなければならないということである。
何はともあれこれで完了である。
iTunesでポッドキャストを公開する方法 | Weekly Internet Topics | デジパ株式会社 にも,Movable Type 用のテンプレートの例があるが,若干不正確。item タグ内は MTEntries タグで囲まれているから問題ないが,それより手前で MTEntryDate や MTEntryAuthor を使う場合は <MTEntries lastn="1">... </MTEntries> で囲む必要がある。
Podcast について調べていると,Atom 1.0 でもポッドキャスティングが可能なことを知った(IBM Atom 1.0 Syndication Formatの概要 : XML : dW - Japan)。エンクロージャをサポートしている。しかし残念ながら iTunes は Atom 1.0 に対応していない。
Movable Type 3.2 以降であれば,CustomFields プラグインを使って(Six Apart ProNet - Plugin Directory - CustomFields),フィールドを追加できるため,MT タグを「流用」するのではなく,ちゃんと指定することができるようになるようだ(s e v i t z d o t c o m | How to: Podcast with iTunes and Movable Type)。
Posted by n at 2006-11-30 00:32 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957