2008-07-20
■ [Tombloo]僕がtombloo/scriptに入れているもの 
Tombloo 0.3ではFirefoxのプロファイルフォルダにあるtombloo/scriptフォルダに拡張子がjsのファイル(パッチ)を置いておくことで、Tomblooを拡張したり、細かい変更を加えることができます。下のリストは僕が実際にtombloo/scriptに入れているものです。
addBefore、addAroundについては
- Tomblooパッチ、GoogleBookmarksでポストするときに必ず特定のタグを付加する - oct inaodu
- Tombloo Patch、はてなブックマークでタイトルを修正しないようにする、アスペクト - oct inaodu
を参考にしました。
(2008-10-30更新、Tombloo 0.3.25がTwitterの仕様変更に対応したので該当部分を削除)
quote postをダブルクオートでくくる
addBefore(Tombloo.Service, 'post', function(ps) { if (ps.type == 'quote' && (!ps.favorite || ps.favorite.name != 'Tumblr')) ps.body = '"' + ps.body + '"'; }); addAround(Tumblr, 'post', function(proceed, args) { if (args[0].type == 'quote') { var ps = args[0] = update({}, args[0]); ps.body = ps.body.slice(1, -1); } return proceed(args); });
Twitterの省略URIを補完する
addAround( Tombloo.Service.extractors['Quote - Twitter'], 'extract', function(proceed, args) { var ps = proceed(args); ps.body = ps.body.replace( /<a href="([^"]*)">[^<]*\.{3}<\/a>/g, '<a href="$1">$1</a>'); return ps; });
photo postの画像クリック時のリンク先を元画像に
addAround(Tumblr.Photo, 'convertToForm', function(proceed, args) { var form = proceed(args); if (args[0].itemUrl) form['post[three]'] = args[0].itemUrl; return form; });
video postの埋め込み用コードをTumblr以外に送らない
addBefore(Tombloo.Service, 'post', function(ps) { if (ps.type == 'video' && ps.body) { ps.embed = ps.body; delete ps.body; } }); addAround(Tumblr.Video, 'convertToForm', function(proceed, args) { if (args[0].embed) { var ps = args[0] = update({}, args[0]); ps.body = ps.embed; } return proceed(args); });
選択部分のソースをquoteする
Tombloo.Service.extractors.register({ name : 'Quote - Selection Source', ICON : 'chrome://tombloo/skin/quote.png', check : function(ctx){ return ctx.selection; }, extract : function(ctx){ var docFragment = ctx.window.getSelection().getRangeAt(0).cloneContents(); var elem = ctx.document.createElement('div'); elem.appendChild(docFragment); $x('.//a[@href]', elem, true).forEach(function(l){l.href = l.href;}); return { type : 'quote', item : ctx.title, itemUrl : ctx.href, body : elem.innerHTML.trim(), }; }, });
タイトルが空のページをpostするときにURIをタイトル代わりにする
addBefore(Tombloo.Service, 'share', function(ctx) { if (ctx.title == '') ctx.title = ctx.href; });
ごく一部のページでタイトルが正常に取得できないのを回避する
addBefore(Tombloo.Service, 'share', function(ctx) { if (ctx.document.title && typeof ctx.document.title != 'string') { var element = $x('//title', ctx.document); ctx.title = element? element.innerHTML.trim() : ''; } });
コメント
brazil2008/07/23 03:27いつも、ありがとうございます。修正してコミットしました。はやくgitに移りたいす。
brazil2008/07/23 03:30上記はtypoの件です。ほかニコニコ動画いただきました、パクパク。
cxx2008/07/23 22:15ニコニコ動画の対応、ありがとうございます。scriptフォルダとaddBefore / addAroundのおかげで細かい改変が簡単になって嬉しいです。