プログラマーになりたい。

プログラミングや写真や本や読書会のことや、日常のこと。

bit.lyのブックマークレットをすこし改変してみる

bit.ly公式の「今みているページを、URL短縮する」ブックマークレットというのがあります。

Standard bit.ly Bookmarklet

The bit.ly Bookmarklet shortens your long link so you can share your bit.ly link on Twitter, Gmail, Email, or Facebook. Drag this to your browser toolbar to get started: Shorten with bit.ly

ソースはこんな感じ(ブックマークレットのリンクは貼れないみたいなのでURL的な部分だけ以下に)

javascript:var%20d=document,w=window,enc=encodeURIComponent,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),s2=((s.toString()=='')?s:('%22'+enc(s)+'%22')),f='http://bit.ly/',l=d.location,p='?v=3&u='+enc(l.href)%20+'&s='+enc(d.title)+'%20'+s2,u=f+p;try{if(!/^(.*\.)?tumblrzzz[^.]*$/.test(l.host))throw(0);tstbklt();}catch(z){a%20=function(){if(!w.open(u))l.href=u;};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else%20a();}void(0)


これを、表示しているページをtwitterにPostするときに使ってます(要ログイン)。Postされる前に編集できるし、選択した部分を引用もしてくれます。
*1

追記

どうも下記のものが、いつのまにかうまく動かなくなっているようですが、ちょっと時間がとれないので修正できてません。ごめんなさい。とりあえず、デフォルトのものをお使いになるか、Sidebar版のブックマークレットもありますので、それなどを試してみてください。


が、不満がないわけでもない。
個人的にはページタイトルは引用のうしろについてほしいし、ダブルクオートじゃなくてカッコを使いたい。というわけで、すこし改変。

javascript:var%20d=document,w=window,enc=encodeURIComponent,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),s2=((s.toString()=='')?s:('%E3%80%8C'+enc(s)+'%E3%80%8D')),f='http://bit.ly/',l=d.location,p='?v=3&u='+enc(l.href)%20+'&s='+'%20'+s2+enc(d.title),u=f+p;try{if(!/^(.*\.)?tumblrzzz[^.]*$/.test(l.host))throw(0);tstbklt();}catch(z){a%20=function(){if(!w.open(u))l.href=u;};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else%20a();}void(0)

解説

とりあえず読めないので改行とインデントいれてみる(ついでに「%20」を半角スペースにもどした)。

javascript:
var 
    d=document,
    w=window,
    enc=encodeURIComponent,
    e=w.getSelection,
    k=d.getSelection,
    x=d.selection,
    s=(e?e():(k)?k():(x?x.createRange().text:0)),
    s2=((s.toString()=='')?s:('%22'+enc(s)+'%22')),
    f='http://bit.ly/',
    l=d.location,
    p='?v=3&u='+enc(l.href) +'&s='+enc(d.title)+' '+s2,
    u=f+p;

try{
    if(!/^(.*\.)?tumblrzzz[^.]*$/.test(l.host))throw(0);
    tstbklt();
}catch(z){
    a =function(){
        if(!w.open(u))l.href=u;
    };
    if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);
    else a();
}void(0)

なんか基本的には

var
    s2=((s.toString()=='')?s:('%22'+enc(s)+'%22')),
…
    p='?v=3&u='+enc(l.href) +'&s='+enc(d.title)+' '+s2,

この2行だけ変えればいいよね。GET引数のsがtweetフォームの冒頭に入る文字列っぽい。「%22」はURLエンコードした「"」記号。
で、http://hogehoge.tk/tool/によると「と」は%E3%80%8Cと%E3%80%8Dになる。


変更後:

var 
…
    s2=((s.toString()=='')?s:('%E3%80%8C'+enc(s)+'%E3%80%8D')),
…
    p='?v=3&u='+enc(l.href) +'&s='+' '+s2+enc(d.title),

*1:ちなみに、FirefoxTomblooもいれてるんだけど、こっちは、いまいち重いしよくわかんない感じでめんどくさい。かといって、URLを手動でコピペすると、これも、どういう基準でURL短縮がされるのかわかんない。などという不満があるためこれに落ち着きました。

Creative Commons License ©2007-2021 IIDA Munenori.