短縮URIサービスのgoo.glを使うためのマズーなスクリプト
Googleの検索結果のURI
Googleのトップからの検索結果のクエリがいつの間にやら変わってたんですかね。
本家の方(google.comの英語版)ではリアルタイムに検索結果が表示されていく*1という分かりやすい違いがあったもんで、気づいてたんですけどね。
ほとんどトップから検索すること無いし今更になって気づきましたw
Google.comの日本語版やGoogle.co.jpの方ではまだインスタント検索導入されていないみたいですが、導入は時間の問題かもしれませんね。
海外SEO情報ブログ情報。
1次ソースはOfficial Google blogの次の文。
"We’ll continue to expand Instant to all views, languages and domains over the next few months."
日本語の検索結果の必要な部分以外を削ると従来のはこんな感じですね。
http://www.google.com/search?hl=ja&q=Sleipnir
http://www.google.co.jp/search?q=Sleipnir
AJAX使用版はパラメタ削るとこんな感じかな。
http://www.google.com/webhp?hl=ja#hl=ja&q=Sleipnir
http://www.google.co.jp/#q=Sleipnir
ソース見るとかなり違いますね。
で、問題なのは検索結果に色々と手を加えるユーザスクリプトです。
うちで公開してるのだと、OtherSearchEngineLinkOnGoogleとGoogleResultThumbnailPlusあたりが該当するのかな。
前者はincludeにAJAX版のURIを追加するだけで行けるはずなんですが上手く行かない。
途中にalertなんか入れるときちんと成功するみたいなのでウェイト的なの入れると問題無いのかも。
後者は階層も若干変わっていたりでより面倒そう。
結論としては(私の技術的限界もあって)従来のような検索結果が廃止されない限りは対応しない方向でw
スクリプトの紹介
今日は枕が長めでここからやっと本題。
URL短縮サービスは数多ありますが、私が専ら使っているのはgoo.glです。次点でj.mp。*2
特殊用途ではyoutu.beやnico.msとかamzn.to*3などですかね。
で、goo.glを使って短縮するのに用いるのはBookmarkletです。
メインはHatena::Letにあったやつ。サブでgurlconvert.comですね。
ただ、鯖の調子が悪いのか実行しても反応無い時もあります。
今回紹介するのはそんな時用のスクリプトです。
現在のページをgoo.glに送るUAスクリプトとgoo.glにてそれを処理するSeaHorseスクリプトです。
"?dummy={URI}"というパラメタを勝手に作ってURIを渡すという残念な使用になっていますw
[追記1-1 2011 Apr. 28th 23:30ころ ]
URIに"#"が入っていると上手く動かないようなので、修正。
[追記1-1 おわり]
(function() { sleipnir.api.NewWindow("http://goo.gl/?dummy="+ encodeURIComponent(sleipnir.api.URL), true); })();
[追記1-2 2011 Apr. 28th 23:30ころ ]
URIに"#"が入っていると上手く動かないようなので、修正。
[追記1-2 おわり]
[追記2 2011 Aug. 02nd 02:40ころ]
別エントリでSeaHorse側のスクリプトだけアップデートしました。
当エントリのスクリプトはそのままにしておきます。
[追記2 終了]
// ==UserScript== // @name Goo.gl Automatic pilot // @include http://goo.gl/?dummy=* // @include http://goo.gl/?url=* // @type SleipnirScript // ==/UserScript== (function() { if(location.href.match(/http:\/\/goo\.gl\/\?dummy=/) != null) { document.getElementById("shorten").value = decodeURIComponent(location.href.substring(location.href.indexOf("?")+7, location.href.length)); document.getElementsByTagName("form")[0].submit(); }else if(location.href.match(/http:\/\/goo\.gl\/\?url=/) != null) { if(document.getElementById("result").value == "http://goo.gl/...") { document.getElementById("result").value = location.href.substring(location.href.indexOf("?")+5, location.href.length); } document.getElementById("result").setAttribute("onfocus", "javascript:this.select();"); document.getElementById("shorten_container").style.backgroundColor = "#aaccff"; document.getElementById("shorten_container").style.border = "1px solid #336699"; } }());