【プログラム】PerlでポッドキャストのRSSを読む

ポッドキャストのRSSを読む必要が生じたのでPerlのモジュールを探す。XML::FeedPPというモジュールで目的が達成できそうなので試してみました。

下準備

XML::FeedPPを使うにはXML::TreePPというモジュールが必要だったので両方とも作者様のサイトからダウンロードしました。モジュールの使い方もここに書いてあるので参考にしました。

両方ともコンパイル不要のPure Perl実装なので.pmファイル単体をコピーするだけで利用できた。とても助かります。

コンストラクタ

いろんなやり方がありましたが今回はWeb上のRSSファイルを解析したいので下記のように書きました。

my $feed = XML::FeedPP->new('http://example.com/podcast.rss');

newメソッドの引数に読みたいRSSのURLを指定します。

エピソードごとに読みたいデータ

ポッドキャストのエピソードごとに「タイトル」「公開日時」「音声ファイルのURL」の情報を得たい。

foreach my $item ($feed->get_item()) {
  ...
  my $title         = $item->title();              # タイトル
  my $pub_date      = $item->pubDate();            # 公開日時
  my $enclosure_url = $item->get('enclosure@url'); # 音声ファイルのURL
  ...
}

get_itemメソッドでエピソードごとに順番にアクセスでき、titleメソッドでタイトル、pubDateメソッドで公開日時を入手できた。

音声ファイルのURLは専用のメソッドがないのでgetメソッドの引数に入手したいタグの情報を入れる。enclosureタグのurlプロパティーの値に音声ファイルのURLが書いてあったので、’enclosure@url’と書いたら得ることができました。

プログラム完成に近づいた

使い勝手の良いモジュールがすぐに見つかって助かりました。作者様が日本人のようなので解説ページも日本語だったので使い方もすぐにわかって良かった。


StartupStockPhotosによるPixabayからの画像を使用しています。