Firefoxのヒストリぜんぶをfaviconにして見る!

最近はほとんどどのサイトにfaviconが置かれるようになりました。Ruby on Railに似せて作られたPHPのアプリケーションフレームワークCakePHPではデフォルトでcakePHPのfaviconが入るようになっていたりします。

サイトのfaviconは、ブラウザのブックマークから目的のサイトを探す時のように、大量にあるリストから自分の探しているものを見つける手がかりになります。ロシアで最大のシェアを誇るサーチエンジンyandexの検索結果にはfaviconが一緒に表示されるようになっています。
Picture 7-9
yandexで表示されているfaviconのURLはhttp://favicon.yandex.net/favicon/ru.wikipedia.orgという形式になっていて、faviconよりあとの部分を変えればそのURLのfaviconが表示されるようになっていました。が、さすがにロシアローカルのサーチエンジンなので日本のサイトはほとんどfaviconがでてきません。そこでURLを渡すとそのfaviconを返してくれるAPIというのがないのか探してみたらFavicon API (ファビコン) α版というのがありました。


Firefox3にもnsIFaviconServiceというなまえの"URLを渡すとそのfaviconを返してくれる"機能が入っています。これを使ってブラウザのヒストリをfaviconにして表示してみたらおもしろかったりするかなーと思ってやってみました。

履歴からプライベートじゃないデータを全部捨てて、残ったURLのfaviconを並べてできたのが下のものです。
Faviconhistory
大半が検索の履歴になっているのはいいとして(ウェブの検索以外にGoogle Code Searchをよく使っています)、なんかやたらflickrにアクセスしてるかんじがしますねー。

というのは文字で書いてある履歴を眺めていてもなかなかわかりませんが、こうしてfaviconにして並べてみると一目瞭然です。

つくりかた

Firefoxの履歴にアクセスするにはFirefoxの内部にアクセスするためのchrome特権というものが必要なのでFirefoxのToolsにあるError Consoleを使います。
javascriptやCSSのエラーが表示されるところです。このダイアログのCode:の部分にjavascriptを書くとchrome特権つきでコードを実行することができます(参考: JavaScriptコンソールからパスワードぶっこ抜き - hogehoge)。
ここに下のテキストエリアにあるコードをコピーして実行してください。 このコードは以下のコードからいらないスペースや改行を削って作ったものです。
var m="@mozilla.org/";
var c=Components;var cc=c.classes;var ci=c.interfaces;
var hs = cc[m+"browser/nav-history-service;1"].getService(ci.nsINavHistoryService);
var result = hs.executeQuery(hs.getNewQuery(), hs.getNewQueryOptions());
var root = result.root;root.containerOpen = true;
var a = [];
for (var i=0; i < root.childCount; ++i) {
    try {
        var node = root.getChild(i);
        var fs = cc[m+"browser/favicon-service;1"].getService(ci.nsIFaviconService);
        var ios = cc[m+'network/io-service;1'].getService(ci.nsIIOService);
        var u= ios.newURI(node.uri, null, null);
        var favicon = fs.getFaviconForPage( u);
        a.push(favicon.spec);
    }
    catch (ex) {    }
}
var cs = cc[m+"browser/nav-history-service;1"].getService(ci.nsINavHistoryService);
cc[m+"widget/clipboardhelper;1"].getService(ci.nsIClipboardHelper).copyString("<"+a.map ( function ( n ) {
    return "img src='" + n+ "' width='16' height='16'";
} ).join("/>\\n<")+"/>");

これを実行するとクリップボードにfaviconがたくさん書かれたHTMLがコピーされるのであとは適当なテキストエディタにはってHTMLとして保存したあと、ブラウザで開けばあなたの履歴をfaviconでみることができます。

tags

  • Firefox
  • visualization
  • 「Firefoxのヒストリぜんぶをfaviconにして見る!」のはてなブックマーク数
  • 「Firefoxのヒストリぜんぶをfaviconにして見る!」deliciousブックマーク数
  • 「Firefoxのヒストリぜんぶをfaviconにして見る!」をはてなブックマークに追加
  • save "Firefoxのヒストリぜんぶをfaviconにして見る!" to del.icio.us
  • 「Firefoxのヒストリぜんぶをfaviconにして見る!」をリアルタイムブログ検索
  • permalink
  • libxmlのHTMLパーサ+XPathでid関数が使えなくてはまる
  • XPathで書いたルールに従って複数ページにまたがったデータをあつめるjavascript製クローラ(失敗作)

comments

TypeKey Enabled
スタイル用のHTMLタグが使えます。
*required

trackbacks

トラックバック元エントリにこのエントリへのリンクがない場合はトラックバックを受け付けません。

http://labs.gmo.jp/mt/mt-tb.cgi/224
©2010 Kentaro Kumagai, GMO Internet Labs., GMO Internet, inc.
bits and bytes
2008 .07. 18 16:31

tagcloud

  • API3
  • C/C++3
  • E4X1
  • FUSE2
  • Firefox30
  • HTML4
  • IE1
  • MySQL1
  • OSX4
  • Opera2
  • PHP4
  • UI2
  • WebKit1
  • XML2
  • XPCOM4
  • XPath5
  • apache2
  • binary2
  • book1
  • data14
  • debug5
  • design2
  • experiments4
  • extension14
  • geo1
  • google gears2
  • google maps API1
  • greasemonkey4
  • httpd5
  • javascript23
  • linux1
  • logging2
  • mobile4
  • perl6
  • tips6
  • tool11
  • vim2
  • visualization4
  • widget1
  • wii3
  • windows7
  • サービス7
  • 和訳1

Archives

  • 2008.07 (4)
  • 2008.06 (4)
  • 2008.05 (5)
  • 2008.04 (4)
  • 2008.03 (4)
  • 2008.02 (6)
  • 2008.01 (3)
  • 2007.12 (4)
  • 2007.11 (5)
  • 2007.10 (4)
  • 2007.09 (4)
  • 2007.08 (4)
  • 2007.07 (8)
  • 2007.06 (7)
  • 2007.05 (4)
  • 2007.04 (5)
  • 2007.03 (6)
  • 2007.02 (4)
  • 2007.01 (6)

about

  • bits and bytesのXML
  • 「bits and bytes」のCreative Commons
  • Powered by Movable Type
  • イベントと地図 - モグ
  • Use ecto to blog!
  • bits and bytesのはてなブックマーク数
  • bits and bytesをMy Yahoo!に追加
  • Subscribe with Bloglines