:subsub (更新チェックされないフィードを検出) コマンドの修正
id:reinyannyan:20060530:p2 で、登録したもののフィード一覧に出てこないフィードを検出するコマンド (:subsub) を作りました。
最近の LDR のアップデートにより、このコマンドで表示されたフィードを開くことが出来なくなったため、修正したいと思います。
// ==UserScript== // @name LDR Command ":subsub" // @namespace http://d.hatena.ne.jp/reinyannyan/20060914/p1 // @include http://reader.livedoor.com/reader/* // ==/UserScript== (function() {with (unsafeWindow) { Hook.extend({ remove: function(f) { this.callbacks = this.callbacks.remove(f); } }); function filter_all_subs(params) { message(params.message); var showall = Config.show_all; if (!showall) Config.show_all = true; subs.filter = function(model){return model.filter(params.filter)}; subs.update(true); // Add a cleanup hook after_subs_load.add(function() { subs.filter = null; Config.show_all = showall; params.onload && params.onload(); after_subs_load.remove(arguments.callee); }); } register_command("subsub", function() { filter_all_subs({ filter: function(item) { return !(item.modified_on && item.subscribers_count); }, message: '\u6c88\u3093\u3067\u308b\u30d5\u30a3\u30fc\u30c9\u3092'+ '\u63a2\u3057\u4e2d...' }); }); }})();
(未テストです。不具合がありましたらお知らせください)
汎用的な部分を別関数として切り分け、フィルター関数を個別に設定することにより、独自の vi コマンドを作りやすいようにしています。
全フィードを表示するのはイヤだけれど、特定の条件 (フォルダ、レート、タイトル等等) に当てはまるものだけ、既読分も含めて表示したい、という要求を実現することができます。
今回の :subsub に関しては、更新時刻が記録されていないもの (更新が 44xヶ月前と表示されてしまうもの) に加え、購読者数が 0 のものも検出するようにしました。
購読者が 0 のフィードというのは、他に購読者がいない時に稀に発生することがあるものです。ping により手動で更新取得することは可能なんですが、クローラーによる更新チェックは行われず、1 に修正されることも無いように思います。
現状では手で購読解除 -> 再登録するしかない、やっかいなフィードです。
追記 [20060915]:
スコープの関数の "()" を忘れてました。これでは実行されません。大変失礼しました