w3mrawdogw3m + rawdog + 自作ローカルCGIスクリプト = 快適
何か一日中部屋から出ずに、見事に引き込もってしまいました。
特に買い物する必要もない場合、本当に外に出る必要がないから困ります。
話は変わって。最近、w3m + rawdogでRSSを購読しているのですが、全文を読みたいのに概要しかない、大抵のサイトは、
概要しか記述されてません。まぁ仕方のないことですので、自分でなんとかしてみることにしました。
とりあえずpythonが使えるので、rawdogから出力されたHTMLを解析して、概要の文を取り除いて、本文と差し替えるような
スクリプトを書いてみました。
が。
悲しいかな、対象のHPがかなりぶっ壊れたHTMLを吐いてしまい、また正しい内容も取得できませんでした。
urllib2を弄りたおせばなんのかなるのかもしれませんが、そこまでやることでもないかなー、と思い、とりあえず
既読管理をするようなCGIを作成することにしました。
まずは、rawdogが標準で利用しているテンプレートを書き換えることにします。
$ rawdog -T > myitemtemplate
これだけじゃだめなので、次にrawdogのconfigファイルを編集します。
$ vi ~/.rawdog/config
関係ないですが、基本的に私はemacs使いです。しかし、emacsのM-x shellを基本使わないので(速度とかw3mとかscreenとか)、
ほんの一行程度の編集などだったら、viで済ませてしまうことが多いだけです。
横道に逸れましたが、次の一行を追記します。
itemtemplate myitemtemplate
ちなみに、全体のレイアウトを変更したい場合には、template 利用するテンプレート名 と記述します。
これで、自前で作成したテンプレートが利用できるようになります。ちなみに私の使っているテンプレートは次のようなもの
になります。
<div class="item feed-__feed_hash__ feed-__feed_id__" id="item-__hash__"> <p class="itemheader"> <a href="file:///cgi-bin/readed.cgi?readed=__hash__">*</a><span class="itemtitle">__title__</span> <span class="itemfrom">[__feed_title__]</span> </p> __if_description__<div class="itemdescription"> __description__ </div>__endif__ </div>
file:///cgi-bin/readed.cgi?readed=__hash__ となってるところがありますが、これがローカルCGIを起動するための処理になります。
あとは、w3mでrawdogの出力したHTMLを読んで、読み終わったら*を押すだけで、その記事が取りのぞかれたHTMLが再度表示されるようになってます。
余談ですが、このローカルCGIを作る際、最初はxml.etee.ElementTreeモジュールを利用しようとしたんですが、どうも一部でもHTMLがぶっ壊れてると読めないらしく、rawdogから出力されたものは読みこむことができませんでした。
まぁ私だけかもしれませんけど。
なので、このとき作成したCGIには、http://www.crummy.com/software/BeautifulSoup/:Beautiful Soupという高機能なHTMl/XMlパーサを利用させていただきました。
このモジュールの使いかたとかはまたいずれ。