10/08/2014

[note] Newsfoxに一括マーク機能を追加

何だかんだで愛用しているFirefox用RSSリーダーアドオンのNewsfox。本格的にメインに据えるようになったのはその前に使っていたGoogle Readerがサービス終了した前後位からですから、それなりに長期間使っている事になりますね。で、これだけ長く使い続けると、お気に入りフラグを付けて保存した旧記事も、積もり積もってそれなりの量になるわけです。だからなのかは不明ですが、ここ最近、記事を読んでいる最中にフィードの更新が発生した場合に、時々その辺の保存データファイルが破損した旨が表示されてリセットがかかるようになったんです。

頻度は今のところ数週間に一度位とそんなに高くないし、フィード毎に保存データファイルが分けられている仕様もあって、破損したファイルに対応するサイト分の、それもお気に入りマークのデータだけが失われるだけだし、ちまちまと消えたマークを付けなおせば復旧出来るので、致命的というわけではないんですけれども。しかし、対象の記事数が数百数千のオーダーにもなると流石に一つ一つクリックし続けるのもダルいというか、正直やってられないんですね。これが一時的なものならまだしも、時間が経てばそれだけ数も、おそらくは発生頻度も増えるから、2次的に手間が増えるだろうものと予想されるわけで、尚更絶望感が募ります。

で、ここ数日の間に特にマーク数の多いサイトで破損が連発したのを機にいい加減もう無理だと見切りを付けまして。抜本的な対策、具体的にはアドオン自体に手を入れて、サイト毎に全記事に一括してマークを付け外しする機能を付ける事にしたんです。と言っても、アドオンの修正作業自体は、以前フリーズする不具合が出た時に経験がありますし、大した話ではないんですけれども。一応、その方法を以下にメモ。

機能の実装方法については、元々個々の記事のマークを付け外しするショートカットがあって、しかし全然使ってませんでしたので、これを表示されているリスト中の全記事に対して一括実行するものに置き換える形で実装することにしました。

まず、以前と同様にNewsfoxのモジュールを適当に用意した編集用フォルダにコピーしてバラします。なお*は其々の環境毎に違う筈なので適宜読み替えの事。

> cp ~/.mozilla/firefox/*.default/extensions/\{899DF1F8-2F43-4394-8315-37F6744E6319}.xpi .
> unzip \{899DF1F8-2F43-4394-8315-37F6744E6319}.xpi

解凍されたファイル中、今回いじる対象のインタフェース関数類はchrome/content/newsfox/ui.jsに定義されています。変更箇所とその内容は下記の通り。

<ui.js変更箇所>

Function handleKeyEvent(e)中、左矢印キー(キーコード37)の部分。arttreeが宣言されている箇所から下(現行バージョンでは1889行以下)を書き換えます。

-------------------------------------------------------------
     var arttree = document.getElementById("newsfox.articleTree");
     // var row = arttree.currentIndex;
     // var flag =gCollect.isFlagged(row);
     // gCollect.setFlagged(row, !flag);
     for (var i=0; i<gCollect.size i++)
          gCollect.setFlagged(i,1);
     artTreeInvalidate();
 }else{
     // markFlaggedUnread(false,true);
     for (var i=0; i<gCollect.size; i++)
          gCollect.setFlagged(i,0);
     artTreeInvalidate();
 }
-------------------------------------------------------------

保存して、一時ファイル等があれば消しておきます。しかるのちにモジュールの再作成。なお、どうも以前とは構成が変更されたようで、前回作成したnewsfox.jar等の中間モジュールの作成は不要です。

> zip -r \{899DF1F8-2F43-4394-8315-37F6744E6319}.xpi chrome chrome.manifest defaults install.rdf

出来上がったxpiファイルを元の場所(~/.mozilla/firefox/*.default/extensions/)に書き戻して終了。 Firefox及びNewsfoxを再起動すれば、Ctrl+Shift+左矢印で一括マーク付与、Ctrl+左矢印で一括マーク消去が出来るようになっている、筈。これでいつリセットがかかっても安心です。というわけで今回はこれでおしまい。

そういえば、Google Readerが終了した時に多くのユーザーの受け皿になっただろうlivedoor readerも近々終了しちゃうんでしたっけ。あの時は多少興味が惹かれつつもlivedoorの信用の無さから選択肢から外したんでした。当初の予想からすれば結構持った方だとも思いますが、やはり結局はこうなるのかと、至極腑に落ちた次第なのです。私は二度手間を避ける事が出来ましたが、再度放り出される形になったユーザー各位にはご愁傷様。そしてlivedoorから事実上単独の受け皿に指定されたfreedlyはどうなるか。アプリ経由で収益はそこそこある筈だし、代わりになる事業も無いからそう簡単に撤退はしないでしょうけれども、いまいち信用出来ないんですよね。つい最近もダウンとかしてましたし。うーん。やはりクラウド型は継続性に難があるから、結局長期的にはローカルアプリが安心という事でしょうか。であれば、Newsfoxともまだまだ長い付き合いになりそうです。

[関連記事 [note] Newsfoxが一部サイトの更新でフリーズ]