新しいAdobeのアップデートファイル一覧ページのRSS生成
スポンサードリンク
http://dtpwiki.jp/rss/adobejpproductupdate.xml
で、
アドビ - 製品のアップデート [www.adobe.com]
を RSS に変換したものを取れるようにしました。
つまり、
▲「アドビ - 製品のアップデート」のページをブラウザで表示
の内容を、RSSリーダで読めます。
次の画像は、Opera 内蔵のメールソフト、M2 で見た場合です。
▲Opera M2 で RSS 表示
対象 RSS がアップデートされたら項目が追加される様はまるでメールソフトみたいです。Mozilla Thunderbird に RSS を登録するっていうのもお勧め。
~~~
生成スクリプトのソースです。
#!/usr/bin/perl use strict; use warnings; use LWP; use XML::RSS; use HTML::Entities; use utf8; use Encode; binmode STDOUT => ":utf8"; use HTML::TreeBuilder; my $base_url = 'http://www.adobe.com'; my $url = 'http://www.adobe.com/jp/downloads/updates/'; my @headers = ( 'User-Agent' => 'DTPWiki.jp html2RSSbot(' . 'http://dtpwiki.jp/rss/' . 'adobejpproductupdate.xml)', ); my $browser = LWP::UserAgent->new; my $response = $browser->get($url, @headers); exit 1 unless $response->is_success; my $html = decode('utf8',$response->content); $html =~ s/\x0D\x0A|\x0D|\x0A/\n/g; $html =~ tr/\t//d; $html =~ s|src="|src="$base_url|g; (my $Regex = <<'REGEX') =~ tr/\n//d; <h4>(.+?)</h4>.+?<p>(.+?)<br\s/>\s*(.+?)</p> REGEX my $data; { my $item; while ($html =~m|$Regex|xgsio) { $item = { title => $1, date => parse_date($2), description => $3, url => q(), }; my $tree = HTML::TreeBuilder->new(); $tree->parse($item->{description}); $tree->eof(); if (my $a = $tree->find('a') ) { $item->{url } = $a->attr_get_i('href'); } $tree->delete; $tree = HTML::TreeBuilder->new(); $tree->parse($item->{title}); $tree->eof(); if (my $a = $tree->find('a') ) { $item->{title} = $a->as_text; $item->{url } = $a->attr_get_i('href'); } $tree->delete; push @$data, { title => $item->{title}, link => $base_url . $item->{url}, date => $item->{date }, description => $item->{description}, }; } } my $sort; @$sort = sort { $b->{date} cmp $a->{date} } @$data; my $rss = XML::RSS->new; $rss->add_module( prefix=>'content', uri=>'http://purl.org/rss/1.0/modules/content/' ); $rss->channel( title => 'アドビ - 製品のアップデート', link => $url, description => 'アドビ - 製品のアップデート', language => 'ja', dc => { publisher => 'adobe.com/jp', contributor => 'DTPWiki.jp', }, syn => { updatePeriod => 'weekry', updateFrequency => '1', }, ); foreach my $item (@$sort) { my $description = $item->{'description'}; $rss->add_item( link => $item->{'link'}, title => $item->{'title'}, description => encode_entities($description, '<>&"'), dc => { date => $item->{'date'}, }, content => { encoded => '<![CDATA[' . $description . ']]>', }, ); } if ($ENV{GATEWAY_INTERFACE}) { require CGI; print CGI::header('text/xml; charset=utf-8'); } print $rss->as_string(); exit 1; sub parse_date { my $date = shift; $date =~tr|0-9|0-9|; $date =~tr|年月|--|; $date =~tr|日||d; (my $year, my $mon, my $day) = split('-', $date); return sprintf("%04d-%02d-%02d", $year, $mon, $day ); }
以前のものよりもすっきりしていますが、これは以前のダウンロードページは、HTML の更新作業をものすごく手作業でやっていたらしく、HTML の構造がキメラで、個別対応部分がすごいぐちゃぐちゃしていたからです。
(2008-10-6 11:45追記)
Adobeのダウンロードの更新情報のRSSフィードを勝手に作成しました - diary@longkey1.net
にて、高機能版のRSSが公開されています。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2146
いつも拝見しています。
ところで駆け込み寺のRSSって死んでます?
はい、さっきまで死んでました、ていうか、
M.C.P.C.: DTP駆け込み寺スレッド表示モードでモダンブラウザでトピックリンクがきかない件直してもらいました。
のエントリで、掲示板メンテナーさんに不具合直してもらったときに入った修正箇所を、RSS 生成側で抽出キーワードとして使っていたんですね。全く面目ないです。
今は直っていますので、ご利用いただけます。ご指摘ありがとうございました。