M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2006年6月12日 20:19

はてなフォトライフ参照のはてな記法を含むRSSをhtmlのimg要素に書き換えるPerl CGI

このエントリーをはてなブックマークに追加 mixiチェック

はてなダイアリーの RSS は、はてなフォトライフ参照のはてな記法がそのまま description 要素に配信されてくるので、html の img 要素に書き換えて、content:encoded 要素に格納します。

RSS リーダで見るとき写真が見られない RSS をこれで変換します。

http://example.com/○○○.cgi?url=http://d.hatena.ne.jp/△△△/rss

こんな感じで RSS リーダにぶっ込みます。mod_perl 環境では動かないと思う(header メソッド当たり)。

#!/usr/bin/perl
 
use strict;
use warnings;
use LWP::Simple;
use XML::RSS;
use CGI;
 
my $fhatena='http://f.hatena.ne.jp/images/fotolife/t';
 
my $q   = CGI->new;
my $url = $q->param('url');
$url =~ m|^http://d.hatena.ne.jp/[\w\d]+?/rss$| or die('no d.hatena!');
 
my $data_from_web = get($url);
 
my $rss = XML::RSS->new;
$rss->add_module(
  uri    => 'http://purl.org/rss/1.0/modules/content/',
  prefix => 'content',
);
 
$rss->parse($data_from_web);
 
my $item_list = $rss->{'items'};
 
foreach my $item ( @{$item_list} ) {
  $_ = $item->{'description'};
  s|f:id:(.+?):(\d{8}?)(\d{6}?)j:image|<p><img src="$fhatena/$1/$2/$2$3.jpg" /></p>|g;
  $item->{'content'}->{'encoded'} = "<![CDATA[\n".$_."\n]]>";
}
 
print $q->header('Application/xml');
print $rss->as_string;

はてなフォトライフって、jpeg 以外もアップできると思うけど見ての通り対応していません。jpeg 以外は見えなくてもいいですよね?

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1700

コメントする