Yahoo! Pipesを使ったブックマークレット『OnePipe』がちょっと便利
March 20, 2007 11:19 AM written by Gen Taguchi
これはアイディア賞。
Yahoo! Pipesの機能(の一部)をブックマークレットで実現しています。指定したキーワードでフィルタリングしたRSSがボタン一発で取得できます(ちょっとしたHackをすれば・・・後述)。
何かのブログを読んでいて「全部はいらないけどこのキーワードが出てきたときだけ欲しいな」というときに便利です。ブログ検索でも同様のことができそうですが、ブックマークレットから瞬時にアクセスできる点がすばらしいですね。
使い方はちょっと癖があるので以下に画像付で解説。
↑ まずはブックマークレットをインストール。ツールバーにドラッグ&ドロップでOKでしょう。
↑ 37signalsのブログに来ました。37signalsは近日中にHighriseなる製品をリリースします。その情報だけ欲しかったとしましょう。
↑ ブックマークレットをクリックするとダイアログボックスが現れます。「Highrise」と指定。
↑ するとRSSが生成されました。
↑ RSSをクリックするとGrazrの画面に(GrazrはRSSをフォーマットしてくれるツール)。これはこれで見やすいですが、自分のRSSリーダーで読みたいもの。Grazrに表示されているRSSをコピーします。あとはそれをRSSリーダーに登録するだけです。
ただ、お察しのとおり、最後でGrazrの画面を仲介するのがややこしいです。そこで簡単にHackしてみます。
変更前のコード。
javascript:q = "" + (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text); if (!q) q = prompt("You didn't select any text. Enter a search phrase:", "");var querystart="";var queryend="";var query=querystart + q + queryend;function txt(str){ return document.createTextNode(str)}function tag(n,c){ var e=document.createElement(n); e.style.fontFamily='Arial,sans-serif'; e.style.color='#000'; if(c)e.appendChild(c); return e}function p(c){ return tag('p',c)}function a(href,desc,titl){ e=tag('a',txt(desc)); e.href=href; if(titl)e.title=titl; e.style.color='#00c'; e.style.textDecoration='none'; return e}function img(src, alt){ e=tag('img'); e.src=src; e.alt=alt; e.border=%220%22; return e}function abslnk(href){ if(!href.match(/^http/)){ var path=(href.match(/^\//))? '/' : location.pathname; href='http://'+location.hostname+path+href; } return href;}function grazrlnk(link){ var grazr=%22http://grazr.com/gzpanel.html?theme=gloss_black&addbar=on&file=http://pipes.yahoo.com/pipes/pipe.run?_id=dCunRCfP2xGZfglMOUVYtA&_render=rss&query=" + query + "&feedurl=%22; var href=abslnk(link.getAttribute('href')); var titleinit=link.getAttribute('title'); var pipe=" | "; title=titleinit + pipe + query; var displaytitle=(title) ? title : ''+href; return a(grazr + href, displaytitle, 'Click here to view ' + displaytitle + ' using Grazr');}var el=tag('div');el.style.zIndex=100000;el.style.position='absolute';el.style.padding='10px';el.style.top='10px';el.style.left='10px';el.style.backgroundColor='#ddeeff';el.style.border='1px solid #cdcdcd';el.style.textAlign='left';var feeddiv=tag('div');var controldiv=tag('div');var help=a('http://www.cleverclogs.org/2007/03/onepipefitsall.html', '?', 'Check this bookmarklets homepage on CleverClogs');controldiv.appendChild(help);var close=a('#','X','Click here to close this panel');close.onclick=function(){el.style.display='none'; return false;};controldiv.style.textAlign='right';controldiv.appendChild(txt(' '));controldiv.appendChild(close);controldiv.appendChild(tag('br'));el.appendChild(controldiv);var found=false;var feedicon=%22http://www.cleverclogs.org/feed-icon-16x16.png%22;var links=document.getElementsByTagName('link');for(var i=0,link; link=links[i]; i++){ var type=link.getAttribute('type'); var rel=link.getAttribute('rel'); var href=link.getAttribute('href'); if (type&&(type=='application/rss+xml'||type=='application/atom+xml')&&rel&&rel=='alternate'){ feeddiv.appendChild(img(feedicon,'feed icon')); feeddiv.appendChild(txt(' ')); feeddiv.appendChild(grazrlnk(link)); feeddiv.appendChild(tag('br')); found=true; } }if(found){ el.appendChild(p(txt('This page links to these files:'))); el.appendChild(feeddiv);}else{ el.appendChild(p(txt('This page does not link to any files.')));}document.body.appendChild(el);y=window.scroll(0,0);
変更後のコード。かなりわかりにくいですが、Grazrのところを削除するだけでOKっぽいです。
javascript:q = "" + (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text); if (!q) q = prompt("You didn't select any text. Enter a search phrase:", "");var querystart="";var queryend="";var query=querystart + q + queryend;function txt(str){ return document.createTextNode(str)}function tag(n,c){ var e=document.createElement(n); e.style.fontFamily='Arial,sans-serif'; e.style.color='#000'; if(c)e.appendChild(c); return e}function p(c){ return tag('p',c)}function a(href,desc,titl){ e=tag('a',txt(desc)); e.href=href; if(titl)e.title=titl; e.style.color='#00c'; e.style.textDecoration='none'; return e}function img(src, alt){ e=tag('img'); e.src=src; e.alt=alt; e.border=%220%22; return e}function abslnk(href){ if(!href.match(/^http/)){ var path=(href.match(/^\//))? '/' : location.pathname; href='http://'+location.hostname+path+href; } return href;}function grazrlnk(link){ var grazr=%22http://pipes.yahoo.com/pipes/pipe.run?_id=dCunRCfP2xGZfglMOUVYtA&_render=rss&query=" + query + "&feedurl=%22; var href=abslnk(link.getAttribute('href')); var titleinit=link.getAttribute('title'); var pipe=" | "; title=titleinit + pipe + query; var displaytitle=(title) ? title : ''+href; return a(grazr + href, displaytitle, 'Click here to view ' + displaytitle + ' using Grazr');}var el=tag('div');el.style.zIndex=100000;el.style.position='absolute';el.style.padding='10px';el.style.top='10px';el.style.left='10px';el.style.backgroundColor='#ddeeff';el.style.border='1px solid #cdcdcd';el.style.textAlign='left';var feeddiv=tag('div');var controldiv=tag('div');var help=a('http://www.cleverclogs.org/2007/03/onepipefitsall.html', '?', 'Check this bookmarklets homepage on CleverClogs');controldiv.appendChild(help);var close=a('#','X','Click here to close this panel');close.onclick=function(){el.style.display='none'; return false;};controldiv.style.textAlign='right';controldiv.appendChild(txt(' '));controldiv.appendChild(close);controldiv.appendChild(tag('br'));el.appendChild(controldiv);var found=false;var feedicon=%22http://www.cleverclogs.org/feed-icon-16x16.png%22;var links=document.getElementsByTagName('link');for(var i=0,link; link=links[i]; i++){ var type=link.getAttribute('type'); var rel=link.getAttribute('rel'); var href=link.getAttribute('href'); if (type&&(type=='application/rss+xml'||type=='application/atom+xml')&&rel&&rel=='alternate'){ feeddiv.appendChild(img(feedicon,'feed icon')); feeddiv.appendChild(txt(' ')); feeddiv.appendChild(grazrlnk(link)); feeddiv.appendChild(tag('br')); found=true; } }if(found){ el.appendChild(p(txt('This page links to these files:'))); el.appendChild(feeddiv);}else{ el.appendChild(p(txt('This page does not link to any files.')));}document.body.appendChild(el);y=window.scroll(0,0);
このブックマークレットを実行すると・・・。
↑ これでGrazrを経由せずにRSSを表示してくれるようになりました。めでたし、めでたし。余力がある人はご利用されているRSSリーダーに直接突っ込むブックマークレットをつくってもよいかも。
ご利用&詳細は以下からどうぞ。
» CleverClogs: OnePipe : the Single-Button Generic Feed Filtering Bookmarklet
Info: |
固定リンク |
コメント (0) |
トラックバック (0) |
↑