GoogleFaceSearch

Google AJAX Search APIにGimageSearchができたのはいつだったか知らんけど、GimageSearch.IMAGETYPE_FACESってオプションがあってこれで検索結果を顔っぽい画像に限定できる。
たぶんImage検索でURLのケツに「&imgtype=face」を付けるのと同じ効果だと思われる。


同一人物の顔ばかり大量に並べたらおもろいかと思って並べてみた。
なんかこんなジャケのレコードがあったような。


http://jackmaster.phac.cc/useless/gfs/


Google AJAX Search APIがアホな用途に使われてないのは結果を最大32件までしか出せないからだと思う。普通に使う分には32で十分だろってGoogleの人も言ってるんだけど普通に使うくらいだったら使いたくないのです。どうにか制限を越えようと思案した結果daterangeを使って茶を濁すことにした。
Googleで検索クエリにdaterange:[ユリウス日]-[ユリウス日]と入れるとインデックスされた日(不確か)の範囲を指定できるという、梅田望夫でも知らないようなマニアックな技がある。これ使って範囲変えて叩けばクエリも変わるからその範囲ごとに32件取れる。上のサンプルは範囲を7日周期でまわしてます。


/*
google face search

author:phac <phac*phac.cc>
license:NYSL

*/

google.load('search', '1');

function GFS(){
this.stepdate = 7; // daterange
this.loop = 4; // execute count per click
this.minWidth = 80;
this.minHeight = 80;

this.target = document.getElementById('results');
this.enddate = 0;
this.urlHistory = '';
this.init();

// events
document.getElementById('searchform').onsubmit = function(self){
return function(event){
return self.search.apply(self, [event || window.event]);
}
}(this);
document.getElementById('clear').onclick = function(self){
return function(){
self.init.apply(self);
}
}(this);
}

GFS.prototype = {
init : function(){
this.target.innerHTML = '';
this.enddate = Math.ceil(getJuliusDate());
this.urlHistory = '';
},

// GimageSearch and some options
searcher : function(){
var searcher = new GimageSearch();
searcher.setRestriction(GSearch.RESTRICT_SAFESEARCH, GSearch.SAFESEARCH_OFF);
searcher.setRestriction(GimageSearch.RESTRICT_IMAGETYPE, GimageSearch.IMAGETYPE_FACES);
searcher.setRestriction(GimageSearch.RESTRICT_COLORIZATION, GimageSearch.COLORIZATION_COLOR);
searcher.setNoHtmlGeneration();
searcher.setResultSetSize(google.search.Search.LARGE_RESULTSET);
searcher.setSearchCompleteCallback(this,
GFS.prototype.searchComplete,
[searcher]
);
return searcher;
},

search : function(event){
var keyword = document.getElementById('keyword').value;
if(!keyword) return false;

preventSubmit(event);// cancel submit

// change daterange and execute
var startdate = 0;
for(var i=0; i


僕はパリスヒルトンちゃん!