ReadMe! JAPAN[2004-04-28-2] というサービスに参加しています。
各ページにカウントアイコンを貼り付けると、自分のサイトの登録情報のページ(私のは <http://s.readmej.com/m/yto/nais.to>)で、アクセス数上位10ページが表示されます(一日一回更新)。
この中から自分のBlogの個別記事ページだけ抜き出して、アクセス数による「自blogの注目記事リスト」を生成する簡単なスクリプトを作りました。
ref. はてなブックマークによる自blogの注目記事リスト[2005-08-10-3]
■設置例
■ソース
超 ad hoc です。解説は後述。
■仕組みについて解説
登録情報ページ(例:<http://s.readmej.com/m/yto/nais.to>)では、以下のようにアクセス数上位10ページ分がtableで表示されています。
私のBlogの記事別ページの URL は「\d{4}-\d\d-\d\d-\d+.html」という正規表現で絞り込めますので、それで取り出します。
そして、それぞれの URL にアクセスし、そのページの title も取り出します(chalow なので cl.itemlist を使えば楽ですが、ちょっとだけ汎用化)。
あとは「くっつき化」(JavaScript ファイル化) するだけです。
負荷を考えて、crontab で一日一回実行するようにしました。
各ページにカウントアイコンを貼り付けると、自分のサイトの登録情報のページ(私のは <http://s.readmej.com/m/yto/nais.to>)で、アクセス数上位10ページが表示されます(一日一回更新)。
この中から自分のBlogの個別記事ページだけ抜き出して、アクセス数による「自blogの注目記事リスト」を生成する簡単なスクリプトを作りました。
ref. はてなブックマークによる自blogの注目記事リスト[2005-08-10-3]
■設置例
■ソース
超 ad hoc です。解説は後述。
(「無償・無保証・著作権放棄」<http://lifehacks.ta2o.net/byebye-copyright.html>)#!/usr/bin/perl -w # This is free software with ABSOLUTELY NO WARRANTY. # 無償・無保証・著作権放棄 (see http://lifehacks.ta2o.net/byebye-copyright.html) # # Web ページへのくっつけ方 (例): # <div class="rssbox"> # <script language="JavaScript" src="readme.js"></script> # </div> use strict; my $output_fn = shift; # JS出力先ファイル名 ### ReadMe! の登録情報ページへのアクセス(事情によりwget使用) `/usr/bin/wget -O /var/tmp/a -q http://s.readmej.com/m/yto/nais.to`; ###ここ変更!### open(F, "/var/tmp/a") or die; my $readme_cont = join('',<F>); close F; ### ランキング情報取り出し my @plist; while ($readme_cont =~ m|<TR>\n<TD>(http.+?)</TD>\n<TD ALIGN="right">(\d+)</TD>\n</TR>|gsm) { my ($u, $c) = ($1, $2); next if ($u !~ /\d{4}-\d\d-\d\d-\d+.html/); ###ここ変更!### push @plist, {'url'=>$u, 'count'=>$c}; } die if (@plist == 0); ### 記事ページからの title 情報の取り出し use LWP::Simple; foreach (@plist) { my $u = $_->{url}; my $c; ($c = get($u)) or die "Can't get $u\n"; ($_->{title}) = ($c =~ m|<title>(.+?)</title>|smi); } ### JavaScript ファイル作成 my $str = "<ul>"; foreach (@plist) { $_->{title} =~ s/\'//g; $str .= qq(<li><a href="$_->{url}">$_->{title}</a> ($_->{count})); } $str .= "</ul>"; $str =~ s/\n//g; open(F, "> $output_fn") or die "Can't open $output_fn : $!\n"; print F "document.writeln('$str');\n"; close(F);
■仕組みについて解説
登録情報ページ(例:<http://s.readmej.com/m/yto/nais.to>)では、以下のようにアクセス数上位10ページ分がtableで表示されています。
私のBlogの記事別ページの URL は「\d{4}-\d\d-\d\d-\d+.html」という正規表現で絞り込めますので、それで取り出します。
そして、それぞれの URL にアクセスし、そのページの title も取り出します(chalow なので cl.itemlist を使えば楽ですが、ちょっとだけ汎用化)。
あとは「くっつき化」(JavaScript ファイル化) するだけです。
負荷を考えて、crontab で一日一回実行するようにしました。
この記事に言及しているこのブログ内の記事