遂に来ました。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カラムの()で括られている部分。
とりあえず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用意しても良いのだけど、表示の仕組みを作るのがメンドイ。