Bloglines Web Services

遂に来ました。RSS 2.0(or OPML) over HTTPな感じで、Basic認証で制限がかかるだけなので、簡単なPerlスクリプトとかでチェックすることが可能。

Bloglines Web Servicesアツイ。ちょっといじってみた感じでは、AWSとほぼ同じ感覚で扱えるという感じ。こちらはRSS 2.0(or OPML)なので扱いも楽。

中でもアツイのはSync APIでしょう。基本的にはlistsubsによりOPML形式で購読リストを拾って、siteのidを取得、それを使ってgetitemsにより未読を取得となるみたい。RSS 2.0が返ってくるので、うまく使えばRSSリーダーのバックエンド(ほとんどキャッシング・プロクシ)として利用可能で、FeedDemonなどは既に対応しているとな。凄いことにFeedDemonは未読情報の同期なんかも実装しているみたい。パッと見た感じでは簡単には実装できなそうな感じなので、スゲーとしか言えない。

スゲー。

気になるのはBloglinesのトラフィックがどれだけ増えるかということですね。エライこといなりそうな気はしないでもない。

追記

BWSにはNotifier APIがあるので、「これは利用するべき!」みたいな。ので、Bloglines Checkerを1.3に更新し、それを利用するようにしました。機能的には何も変更がありませんが、なるべくなら更新してください。変更文字数は13文字(ぉ。今までのシステムと互換性を持たせているところがニクイ。Bloglinesマンセー!

追記

とりあえずSync APIのlistsubsを叩くPerlスクリプトを書いてみた。

#!/usr/local/bin/perl

use strict;

my $uname = 'メールアドレス';
my $pass  = 'パスワード';

my $loc   = 'rpc.bloglines.com:80';
my $realm = 'Bloglines RPC';

use LWP::UserAgent;

my $ua = LWP::UserAgent->new();
$ua->credentials($loc, $realm, $uname, $pass);

print $ua->get("http://rpc.bloglines.com/listsubs")->as_string;

exit;

遅!仕様的にキャッシュできない(未読状態が少しでも変わると中身が変わってしまう)ので辛いかも。

本筋とは関係ないですけど、FirefoxのPassword Managerでrealmを調べることができました(まぁ間違ったのを送った場合はレスポンスヘッダに正しいrealmが書かれているんですけどね)。Siteカラムの()で括られている部分。

追記@2004/09/29

とりあえずWSHでもlistsubsを叩いてみる。以下はVBScriptでのコード。

Set xmlHttp = WScript.CreateObject("Msxml2.XMLHTTP.3.0")
Set xmlDoc  = WScript.CreateObject("Msxml2.DOMDocument.3.0")

xmlHttp.open "GET", "http://rpc.bloglines.com/listsubs", False, "メールアドレス", "パスワード"
xmlHttp.send

xmlDoc.async = False
xmlDoc.loadXML xmlHttp.responseText

If xmlDoc.parseError.errorCode <> 0 Then
  WScript.Echo "You have error " + xmlDoc.parseError.reason
Else
  WScript.Echo xmlDoc.xml
End If

WScript.Quit

続いてJScriptのコード。

var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
var xmlDoc  = new ActiveXObject("Msxml2.DOMDocument.3.0");

xmlHttp.open("GET", "http://rpc.bloglines.com/listsubs", false, "メールアドレス", "パスワード");
xmlHttp.send();

xmlDoc.async = false;
xmlDoc.loadXML(xmlHttp.responseText);

if (xmlDoc.parseError.errorCode != 0) {
  WScript.Echo("You have error " + xmlDoc.parseError.reason);
} else {
  WScript.Echo(xmlDoc.xml);
}

WScript.Quit();

うむ、良い感じ。これをベースにして、未読をすべて取得して単一のHTMLファイルに吐くアプリケーション作るかな。DelphiでGUI用意しても良いのだけど、表示の仕組みを作るのがメンドイ。