RSSを記事の日付順にソートするPerlスクリプト
スポンサードリンク
昔作った RSS 自動生成は、フロー型掲示板の出力をそのまま順番に記事として取り扱うので、RSS リーダの方でソート表示しない場合、表示順が明らかにおかしくなります。というわけで、対策するにはどうするかっていう話です。
ファイル名は適宜つけてください。やっぱり CGI としても動くようにしました。
#!/usr/bin/perl -w use strict; use LWP::Simple; use XML::RSS; #use XML::RSS::Liberal; use utf8; use Data::Dumper; #my $url = $ENV{QUERY_STRING}; my $url = 'http://dtpwiki.jp/rss/indesign.xml'; my $data_from_web = get($url); my $rss = XML::RSS->new; #my $rss = XML::RSS::Liberal->new; $rss->parse($data_from_web); #print Dumper($rss); #exit; @{$rss->{'items'}} = sort { $b->{dc}->{date} cmp $a->{dc}->{date} } @{$rss->{'items'}}; #splice (@{$rss->{'items'}}, 10); if ($ENV{GATEWAY_INTERFACE}) { require CGI; print CGI::header('text/xml; charset=utf-8'); } print $rss->as_string(); #$rss->save('rss.xml');
ソートキーを変えたいときは、sort のあたりをゴリゴリっていじってください。いじるときは、Data::Dumper で、読み込まれた RSS の解析結果を表示させるといいですよ。
あと、昨日のエントリの、RSS の件数を制限するやつをつけてもいいですね。
~~~
僕は、自分のサイトで生成している HTML→RSS スクリプトで使っているので、メモ代わりとして書いておきます。
スポンサードリンク
トラックバック(1)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1633
livedoor Reader最高だぜ!ということでlivedoor Readerで色々な掲示板の内容を表示できればいいね!ってなわけでRSSを作ることに。 ここに頼んでも良かったのですが、あんまり頼んでも(いろいろな意味で)まずいので、自分で作ってみることにしました(今日は集金日でした... 続きを読む
コメントする