mallowlabsの備忘録 このページをアンテナに追加 RSSフィード

2008-01-04

[][]OperaGoogle Web History を使えるようにする UserJS

新年一発目のエントリ。あけましておめでとうございます。


Google Web HistoryをOperaで使うにはどうすればいいのか。 - あまたの何かしら。in はてな

面白すぎたのでアイディアを丸ごともらってスクリプトを書いてみた。


enablegooglewebhistory.user.js

// ==UserScript==
// @name EnableGoogleWebHistory
// @author mallowlabs
// @namespace http://mallowlabs.s206.xrea.com/
// @version 0.0.2
// @license public domain
// @description : Enable Google Web History
// @published 2007-01-05
// @modified 2006-01-05
// @include *
// ==/UserScript==

// see also
// http://www.scss.com.au/family/andrew/opera/panels/pagerank/
// http://d.hatena.ne.jp/amatanoyo/20080104/1199450996
// =========================================
(function(){

    // avoid frame
    if (window.self != window.parent) return;

    var r=function(x,y){
        return Math.floor((x/y-Math.floor(x/y))*y+.1);
    },
    ch=function(url){
        url='info:'+url;
        var c=[0x9E3779B9,0x9E3779B9,0xE6359A60],i,j,k=0,l,f=Math.floor,
        m=function(c){
            var i,j,s=[13,8,13,12,16,5,3,10,15];
            for(i=0;i<9;i+=1){
                j=c[r(i+2,3)];
                c[r(i,3)]=(c[r(i,3)]-c[r(i+1,3)]-j)^(r(i,3)==1?j<<s[i]:j>>>s[i]);
            }
        };
        for(l=url.length;l>=12;l-=12){
            for(i=0;i<16;i+=1){
                j=k+i;c[f(i/4)]+=url.charCodeAt(j)<<(r(j,4)*8);
            }
            m(c);
            k+=12;
        }
        c[2]+=url.length;
        for(i=l;i>0;i--)
            c[f((i-1)/4)]+=url.charCodeAt(k+i-1)<<(r(i-1,4)+(i>8?1:0))*8;
        m(c);
        return'6'+c[2];
    };
    var url=document.location;

    /* create image element */
    new Image().src = 'http://www.google.com/search?client=navclient-auto&ch='+ch(url)+'&features=Rank&q=info:'+escape(url);
})();



仕組み

クロスドメイン制約がとにかく面倒なので

表示されない img タグ Image の src 属性に指定して

PageRank APIURL を直接叩いている。

PageRankを叩けばいいっていうことは、ブラウザ上に表示させなくてもいいよなぁと思ったり。

http://d.hatena.ne.jp/amatanoyo/20080104/1199450996

というアイディアの丸パクリ。


PageRank APIURL の算出には

Google PageRank Button - Panels - Opera - Andrew Gregory’s Web Pages

をそのまま利用した。


お試しあれ。


2008/01/05 追記

2点つっこませてください。

まず、img要素を追加しなくてもnew Image().src="〜"で行けるはず。

あと、変数urlがグローバルになってます。

http://del.icio.us/BNJ

有益なアドバイスありがとうございます。

ご指摘いただいた点をスクリプトに反映しました。


2008/01/11 追記

id:edvakf のおかげで海外のサイトでも取り上げられているみたいなので

Userscript.orgアップロードしてみました。

どうやら Opera だけじゃなくて IE / Firefox / Safari / Konqueror でも動くみたいです。

Google Toolbar 無しで Google Web History を使いたい人は使ってやってください。

amatanoyoamatanoyo 2008/01/05 01:00 おお、どうもですどうもです。

edvakfedvakf 2008/01/11 00:10 海外のかなり大きなサイトにこのことをコメントで書いたら、早速記事にして取り上げてくれました。報告までに。

Use Google Web History Without Installing Google Toolbar
http://googlesystem.blogspot.com/2008/01/use-google-web-history-without.html

edvakfedvakf 2008/01/11 10:11 おせっかいかもしれませんが、コメント欄でこれはUserScript.orgに載せるべきだという議論が進行していますので、載せてあげるべきではないでしょうか。

mallowlabsmallowlabs 2008/01/11 10:59 どうもありがとうございます.
とりあえず Userscript.org に載せてみました.
http://userscripts.org/scripts/show/19741

ゲスト