Google検索 - 充実バー

By blooo Last update Oct 9, 2009 — Installed 203 times. Daily Installs: 0, 3, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 3, 0, 0, 0, 0, 3, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0

There are 1 previous version of this script.

// ==UserScript==
// @name           Google検索 - 充実バー
// @version        0.1
// @namespace      http://d.hatena.ne.jp/blooo/
// @include        http://www.google.tld/search?*
// ==/UserScript==


//URL取り扱い
function getParameter(str){
var dec=decodeURI;var par=new Array,itm;if(typeof(str)=='undefined')return par;if(str.indexOf('?', 0)>-1)str=str.split('?')[1];str=str.split('&');for(var i=0;str.length >i;i++){itm=str[i].split("=");if(itm[0]!=''){par[itm[0]]=typeof(itm[1])=='undefined'?true:dec(itm[1]);}}return par;
}

function setParameter(par){
var enc = encodeURI;var str='',amp='';if(!par) return'';for(var i in par){str=str+amp+i+"="+enc(par[i]);amp='&'}return str;
}


var set = [
  [ '画像', 'http://images.google.com/images?' ],
  [ '動画', 'http://video.google.com/videosearch?'],
  [ '地図', 'http://maps.google.co.jp/maps?'],
  [ 'ニュース', 'http://www.google.com/news/search?'],
  [ 'ブログ', 'http://blogsearch.google.com/blogsearch?'],
  [ '本', 'http://books.google.com/books?', ],
  [ '翻訳', 'http://translate.google.co.jp/translate_t?'],    
  [ 'Scholar', 'http://scholar.google.com/scholar?'],
  [ 'Code', 'http://code.google.com/search/#'],
  [ '履歴', 'http://www.google.com/history/find?'],
  [ 'ブックマーク', 'http://www.google.com/bookmarks/find?'],
  [ '24時間以内', 'http://www.google.com/search?'],
  [ '1週間以内', 'http://www.google.com/search?'],
  [ '1年以内', 'http://www.google.com/search?'],
  [ '引用符', 'http://www.google.com/search?'],  
];

var params = getParameter(location.search);
var div = document.createElement('div');

for(i=0; i<set.length; i++){
  if(set[i][0] == null)
  {
    div.appendChild( document.createElement('br') );
    continue;
  }
  
  var a = document.createElement('a');
  var text = document.createTextNode(set[i][0]);
  
  if(set[i][0] == 'Code')
    a.href= set[i][1] + setParameter( { 'q': params['q'] } );
  else if(set[i][0] == '翻訳')
  {
    if( params['q'].match(/^[a-zA-Z0-9\+ ]+$/) )
      a.href = set[i][1] + "#en|ja|" + params['q'];
    else
      a.href = set[i][1] + "#auto|en|" + params['q'];
  }
  else if(set[i][0] == '引用符')
  {
    var temp = params['q'];
    if( temp.match(/^"(.*)"$/) )
      params['q'] = RegExp.$1;
    else
      params['q'] = '"' + params['q'] + '"'
    a.href= set[i][1] + setParameter( params );
    params['q']=temp;
  }
  else if(set[i][0] == '24時間以内')
  {
    params['tbs'] = 'qdr:d';
    params['tbo'] = '0';
    a.href = set[i][1] + setParameter( params);
  }
  else if(set[i][0] == '1週間以内')
  {
    params['tbs'] = 'qdr:w';
    params['tbo'] = '0';
    a.href = set[i][1] + setParameter( params);
  }
  else if(set[i][0] == '1年以内')
  {
    params['tbs'] = 'qdr:y';
    params['tbo'] = '0';
    a.href = set[i][1] + setParameter( params);
  }  
  else
    a.href= set[i][1] + setParameter( { 'q': params['q'] , 'hl': params['hl']  } );
  
  a.appendChild(text);
  a.setAttribute('class','gb1');
  div.appendChild(a);
}



//言語切替
//original: http://userscripts.org/scripts/show/9649
/*
    'af', 'sq', 'am', 'ar', 'hy', 'az', 'eu', 'be', 'bn', 'bh', 'xx-bork', 'bs', 'br', 'bg', 'km', 'ca',
    'zh-CN', 'zh-TW', 'co', 'hr', 'cs', 'da', 'nl', 'xx-elmer', 'en', 'eo', 'et', 'fo', 'tl', 'fi',
    'fr', 'fy', 'gl', 'ka', 'de', 'el', 'gn', 'gu', 'xx-hacker', 'iw', 'hi', 'hu', 'is', 'id', 'ia', 'ga',
    'it', 'ja', 'jw', 'kn', 'kk', 'xx-klingon', 'ko', 'ku', 'ky', 'lo', 'la', 'lv', 'ln', 'lt', 'mk',
    'ms', 'ml', 'mt', 'mr', 'mo', 'mn', 'ne', 'no', 'nn', 'oc', 'or', 'ps', 'fa', 'xx-piglatin', 'pl',
    'pt-BR', 'pt-PT', 'pa', 'qu', 'ro', 'rm', 'ru', 'gd', 'sr', 'sh', 'st', 'sn', 'sd', 'si', 'sk', 'sl',
    'so', 'es', 'su', 'sw', 'sv', 'tg', 'ta', 'tt', 'te', 'th', 'ti', 'to', 'tr', 'tk', 'tw', 'ug', 'uk', 'ur',
    'uz', 'vi', 'cy', 'xh', 'yi', 'yo', 'zu'
*/

//params=getParameter(location.search);
var list = ['en','ja','fr','de','ru','es','it','ko','zh-cn','zh-tw'];
list.sort();
var langSelect = document.createElement('span');
var baseurl = 'http://www.google.com/search?';
var current = params['hl'];
var generateOption = function(v) {
 params['hl'] = v;
 if(params['lr']) params['lr'] = 'lang_' + v;
 var url = baseurl + setParameter(params);
 return '<option value="' + url + '"' + ((v == current)? ' selected="1"' : '') + '>' + v + '</option>';
 params = temp;
};
var opts = list.map(generateOption).join("\n");
var sel = '<select name="hl" onchange="location.href=this.options[this.selectedIndex].value">' + opts + '</select>';
langSelect.innerHTML=sel;
div.appendChild(langSelect);

//complete
var gbar = document.evaluate('//div[@id="gbar"]',document,null,7,null).snapshotItem(0);
gbar.innerHTML='';
div.setAttribute('id','utilityLinks');
gbar.appendChild(div);


//Style
GM_addStyle(<><![CDATA[

 #utilityLinks img{
   border:none;
   width:25px;
   padding:0 1px;
 }
 #utilityLinks a{
   white-space:nowrap;
   line-height:1.6em;
 }
 
 #utilityLinks select{
 }
 .gbh {
 top:29px !important;
 }
  
 #gbar{
   height:auto;
 }

]]></>);