今日のちょっとしたプログラム

ブログを書くために新聞などのHPを保存することが多いのだが、困ったことが一つ。
HTML形式やテキスト形式で保存すると、どこのHPから保存したのかがわからなくなる。
MHTML形式だと保存先のURLが記録されるが、それを見るためにはテキストエディタで開かなければならない。ところがテキストエディタだと2バイト文字がエンコードされているので記事の内容がわからない。
ブラウザでMHTMLファイルを開いて、URLを見るためにテキストエディタを開くという二つの動作が必要となる。なにより、MHTMLは実サイズより大きくなる。
理想はテキストで保存し、その先頭にセーブしたURLが記述されていることなのだが、どうやら簡単には実現できない。検索してもプラグインを入れたりしないとできないらしい。しかしプラグインを入れるのは嫌だ。

使っているブラウザがOperaなのが問題なのかもしれない。他のブラウザならもっと簡単に実現できるだろうし、プラグインを入れることにも心理的抵抗を感じないだろう。機能を拡張するためにプラグインを入れることが当たり前のFireFoxを使っていれば、特にそうだろう。
しかしながら、Operaを使うようになって幾星霜、他のブラウザに乗り換えるのも面倒だ。なにしろOperaに広告スペースがあり、お金を払うとそれが消える、などという時代から使っている。最初に使ったときは確か日本語化すらされていなかった。
仕事の関係でIEFireFoxその他のブラウザは一通り使ったのだが、どうしても使い慣れたOperaに戻ってきてしまう。ネットスケープMosaicや名前を忘れてしまったようなブラウザを経て、辿り着いたのがOperaなのだから仕方がない。
セキュリティの面でもOperaには分がある。普及していないから攻撃対象にされる確率が低い(笑
Operaと同じ環境を別のブラウザで再構築する手間を考えるとかなり精神が萎えてしまう。各種IDとパスワード、クッキー、サイト毎の設定(広告を表示しないとかJavaScriptをオフにするとかインラインフレームを表示しないとか)を別のブラウザで構築する…そういうツールがあれば良いのだが、なにしろ普及していないブラウザだからツールを作ってくれる人もいない。

さて、テキストの保存だが、Operaは外部プログラムに引数として「現在選択している文字列」と「現在アクティブなタブのURL」を渡せる。唯一足りないのが「タイトル」ということになる。
Operaを使ってHTMLやテキストを保存するためにプラグインその他が必要になるのは「タイトル」を取得するためのようだ。
GetWindowTextを使えばアクティブウインドウのタイトル取得はできるのだが、今回はそこまでせずとも「選択した文字列の先頭行をタイトルとして扱う」だけで良いだろう、と判断。そうやって取得したタイトルを保存ファイル名とした。
複数の新聞から同じ記事を保存する場合にタイトルが被る可能性があるので保存ファイル名にドメイン名を追加することも考えたのだが、まあそうそうあることではないのでこの機能も省く。機能を限定してと言うか省きまくったら道が見えた。
あとはプログラムをポップアップメニューから起動して、引数を渡すようにすれば良い。VBでコードを書いて、ポップアップメニューをカスタマイズして終了。ファイル名として使えない文字がタイトルに含まれていたら、全角に置換することで対応。
よく考えたらPerlを使っても良かった。しばらく触っていないから忘れかけてるし。

そしてせっかく作ったプログラムを利用せず、作ったことだけをネタにしてブログ更新ってのは如何なモノだろう、と自問自答。

しかし、日教組の教研集会が始ったので次のネタは決定ですね。