goo.glで短縮URL作成&ページタイトル取得(非ポップアップ)

  • /*
     * @title goo.glで短縮URL作成&ページタイトル取得(非ポップアップ)
     * @description 今見ているページを短縮URLにする&ページタイトル取得。
     * @include http://*
     * @license MIT License
     * @require 
     */
    var doit = function (b) {
        var USER = "toolbar@google.com";
        var LONG_URL = encodeURIComponent(b);
        function c() {
          for (var l = 0, m = 0; m < arguments.length; m++) l = l + arguments[m] & 4294967295;
          return l
        }
        function d(l) {
          l = l = String(l > 0 ? l : l + 4294967296);
          var m;
          m = l;
          for (var o = 0, n = false, p = m.length - 1; p >= 0; --p) {
              var q = Number(m.charAt(p));
              if (n) {
                  q *= 2;
                  o += Math.floor(q / 10) + q % 10
              } else o += q;
              n = !n
          }
          m = m = o % 10;
          o = 0;
          if (m != 0) {
              o = 10 - m;
              if (l.length % 2 == 1) {
                  if (o % 2 == 1) o += 9;
                  o /= 2
              }
          }
          m = String(o);
          m += l;
          return l = m
        }
        function e(l) {
          for (var m = 5381, o = 0; o < l.length; o++) m = c(m << 5, m, l.charCodeAt(o));
          return m
        }
        function f(l) {
          for (var m = 0, o = 0; o < l.length; o++) m = c(l.charCodeAt(o), m << 6, m << 16, -m);
          return m
        }
        var g = "auth_token";
        var i = e(b);
        i = i >> 2 & 1073741823;
        i = i >> 4 & 67108800 | i & 63;
        i = i >> 4 & 4193280 | i & 1023;
        i = i >> 4 & 245760 | i & 16383;
        var j = "7";
        h = f(b);
        var k = (i >> 2 & 15) << 4 | h & 15;
        k |= (i >> 6 & 15) << 12 | (h >> 8 & 15) << 8;
        k |= (i >> 10 & 15) << 20 | (h >> 16 & 15) << 16;
        k |= (i >> 14 & 15) << 28 | (h >> 24 & 15) << 24;
        j += d(k);
        var SHORT_URL = {
          extURL:'http://goo.gl/api/url',
          user:'toolbar@google.com',
          url:b,
          auth_token:j
        };
        return SHORT_URL;
    };
    var getscript = function(callb){
      var g_script = document.createElement('script');
      g_script.src ="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js";
      document.body.appendChild(g_script);
      var cid = setInterval(function(){
        if(window.jQuery!=undefined){
          clearInterval(cid);
          delete cid;
          callb();
        }else{
          document.body.appendChild(g_script);
        }
      },1000);
    };
    var getGoogl = function (url){
      $.ajax({
        url:'http://jsonptunnel.appspot.com/',
        dataType:'jsonp',
        jsonp:'_callback',
        data:doit(url),
        success:function(data){
          if(!data||!data.short_url){
            alert("Oh...No...");
            return false;
          }
          ptext=(document.title)+"\r\n"+(data.short_url);
          var ele=document.createElement('textarea');
          ele.style.width='100%';
          ele.value=ptext;
          document.body.insertBefore(ele,document.body.firstChild); 
          ele.focus();
          ele.select();
         }
      });
    };
    getscript(function(){
      var long_url = location.href;
      getGoogl(long_url);
    });
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2010/10/26 11:50:11 - 2010-10-26