livedoor Reader で記事のリンク先を書き換える
"v" で記事を読んだり、Greasemonkey スクリプトで「はてブ」にポストする時などに、フィードによってはフィード向けの URI が提供されているために困ることがあります。
特に SBM の場合、登録 URI のばらつきが生じたり、記事の一つ手前のクッション・ページが登録されてしまう場合もあるわけです。
アクセス元の分析のためとか、広告ページを経由させたい、といったフィード提供側の思惑があることは当然理解できるんですが、LDR の快適さの妨げとなることもまた事実です。
ということで、リンクを修正する方法を考えてみました。
"before_printfeed" イベントを使います:
register_hook("before_printfeed", function(feed) { if (feed.link_rewritten) return; var url = feed.channel.link; var s, r; // search & replace (for caching regexp, if necessary) var iter; // link-rewriter if (!url.indexOf("http://codezine.jp")) { s = /r\.x.+?(\d+)$/; r = "a/article.aspx?aid=$1"; iter = function(v) { v.link = v.link.replace(s, r); }; } else if (!url.indexOf("http://www.bbc.co.uk/radio4/today")) { iter = function(v) { v.link = v.enclosure; }; } // else if... iter && feed.items.forEach(iter); feed.link_rewritten = true; });
といった感じで、サイト毎に記事 URI の書き換え規則を定義しておくわけです。例ではリンク書き換えの「関数」を定義していく形になっていますが、"enclosure" 等を使う必要が無ければ "link" に対する「検索」と「置換」のペアを定義するだけで済むと思います。
また、この URI 正規化により、記事 URI を利用する他のスクリプト (はてブ件数表示など) にも効果が表れるはずです。
参照:
『livedoor Readerをはてブと合体』on IE
最速インターフェース研究会 - livedoor ReaderにSimpleAPIのサムネイルを加えるGreasemonkeyスクリプト