2006年05月03日

この記事をクリップ! b.hatena.ne.jp/entry 5/3 徒然 / はてなRSS手動更新の自動化

・去年夏に届いた配当をようやく受け取り。
 期限内に郵便局に行けずじまいでした…。(^^;

・私は、はてなRSSのヘビーユーザなのですが、
 はてなへpingしないサイトは反映タイミングが遅い…。

 手動更新機能があるのですが、面倒なので自動化。
 以下のようなスクリプトで強制確認させています。
 OPML形式でRSSフィードのリストをエキスポートして、
 それをXMLパーサで処理して1つづつ確認しています。

 あまり頻繁に実行するとサーバに負担がかかりそうなので
 アレですが、1日に1度、使っています。参考になれば…。
#!/usr/local/bin/perl
# automatic hatena rss update
# 2006-05-03 gotospace

use strict;
use warnings;
use Jcode;
use XML::Parser;
use XML::SimpleObject;
use LWP::Simple;

my $content   = 'opml.xml';
my $uri_feed  = 'http://r.hatena.ne.jp/feed';
my $uri_check = 'http://r.hatena.ne.jp/check';

my $parser = XML::Parser->new(ErrorContext => 2, Style => 'Tree');
my $simobj = XML::SimpleObject->new($parser->parsefile($content));

check_outlines($simobj->child('opml')->child('body'));

sub check_outlines
{
    my $outlines = shift;
    my @outlines = $outlines->children('outline');

    foreach my $outs (@outlines) {
        my %atts = $outs->attributes();

        if (exists($atts{'xmlUrl'})) {
            my $xmlUrl = $outs->attribute('xmlUrl');
            my $content = get("$uri_feed/$xmlUrl");

            if ($content =~ /id="fid" value="([0-9]+)"/) {
                my $fid = $1;
                my $res = get("$uri_check?fid=$fid");
                $res = jcode($res)->sjis;
                print "$fid : $res\n";
            }
        }
        if ($outs->children()) {
            check_outlines($outs);
        }
    }
}

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gotospace/50479902
この記事へのトラックバック
ここのところマッシュアップというか、フィードをいろいろといじっているのですが、...
「Twitterの投稿をmixiにスピーディーに反映させたい」と思ったところ…。【ブッダの教えとネットと瞑想 ‐ 富永道也のブログ】at 2008年01月25日 18:56
この記事へのコメント
xfyが出荷されればこういったことに簡単に
対応できるということでしょうか。楽しみです。
Posted by xfy at 2006年05月04日 03:06
xfy、面白そうですね。
Posted by gotospace at 2006年05月05日 00:53
 (管理人にのみ通知)
 (管理人にのみ通知)
 
月別コラム
スポンサード リンク
逆アクセスRanking
実験中
あわせて読みたい
livedoor Blog
このBlogをはてなRSSに追加 このBlogを
はてなRSSに追加
このBlogをチェッカーズに追加 このBlogを
チェッカーズに追加
このBlogをリーダーに追加 このBlogを
リーダーに追加
アクセス解析