2014/10/26

Perl で Sitemap 生成するモジュール WWW::Sitemap::Simple 書いた

Sitemap ファイル生成するとき、いつもリスト生成して、XML 適当に埋めてファイルに書いてってのを毎度やってたのだけど、もうだいぶめんどいのでモジュールにした。実は、Perl には Sitemap を扱うモジュールがいくつかあるのだけど、依存が激しかったりインターフェースがなんかよくわからなくて、自分が扱いたい感じじゃなかったのでさくっと書いた。

WWW::Sitemap::Simple

use WWW::Sitemap::Simple;

my $sm = WWW::Sitemap::Simple->new;

$sm->add('http://example.com/');

# add with params
$sm->add(
    'http://example.com/foo' => {
        lastmod    => '2005-01-01',
        changefreq => 'monthly',
        priority   => '0.8',
    },
);

$sm->write('sitemap/file/path');

オブジェクトに url ばんばん add して最後に write すればOK。

write メソッドは何も渡さなければ STDOUT に吐き出すけれど、ファイル名を渡すでもいいしファイルハンドルを渡すでもいいし、ファイル名のケツを .gz にしとくと圧縮して出力とかしてくれる。

ちなみに自分は sitemap index は生ファイルで生成することが多い。URL 羅列するだけで良いので最も楽。sitemap 自体はいろいろ面倒だったんだけど、これでだいぶ楽になった。

サイト内検索