オープンソースの画像生成AIをセットアップから使い方まで解説する『Stable Diffusion AI画像生成ガイドブック』(ソシム刊)発売中(→本のサポートページ

はてなダイアリーの情報をかき集める話

ネタ元はd:id:smoking186:20040318#1079563826さん。LIRS形式でアクセスすれば、はてなダイアリーの全ユーザ、日記のタイトル、アクセス時点での最終更新時刻を一気に取得できる。

ちょうど、IDやタイトルの一覧を使って、24時間以内に更新している人、48時間以内に更新している人…の人数を調べられないかと考えていたところだったので、とても便利。

LIRSの仕様書
Last modified Information Relaying Specification〜更新時刻情報受け渡しデータ仕様(LIRS)仕様書

得られたデータから、更新時刻や日記のタイトル、ユーザIDを抽出してみた。

秀丸エディタでは、置換機能で「^LIRS,..........,\f..........\f,32400,,http://d.hatena.ne.jp/[a-zA-Z0-9\-_^,]*/,\f.*\f,http://a.hatena.ne.jp/,,$」を「\1,\3」に置換すると、「更新時刻のエポック秒,日記のタイトル,ユーザID」という一覧を得られた。正規表現の処理系によっては、「..........」の部分を「[0-9]{10}」で代用できるかもしれない。また、「\f」は秀丸エディタでのタグ置換の区切り記号なので、これも適宜読み替えれば同じように置換できるだろう。

たとえば、Perl正規表現では「s|^LIRS,[0-9]{10},([0-9]{10}),32400,,http://d.hatena.ne.jp/[a-zA-Z0-9\-_^,]*/,(.*),http://a.hatena.ne.jp/,,$|$1,$2|;」としてやれば、上と同様に「更新時刻のエポック秒,日記のタイトル,ユーザID」という形式に変換できた。

なお、日記名が長く、ユーザIDとの区切り文字「,」が抜けている日記が2つ、対象サイトのURLが「http://d.hatena.ne.jp/ユーザID」ではない日記が1つなど、例外がいくつかあった。また日記のタイトルに「,」が入っているものがたくさんある。上の形式のテキストを、単にカンマ区切りのテキストとして処理しようとしたり、「,」をタブに一括置換したりすると大変な目に遭うだろう(遭いました)。

今日の正午ごろ取得したLIRSファイルをもとに、「更新時刻のエポック秒,日記のタイトル,ユーザID」の一覧を作ってみたところ、ファイルの容量は約1.1MBになった。

全ユーザのIDを取得できたので、d:id:alpinix:20040318さんが根気強く調べた「ユーザー登録から本日までに日記をつけた日数」が最も長いユーザーも、より正確に調べることができるだろう。