samidare

これは何か

Rubyで書かれたアンテナソフト。

特徴は、

  • HTML,RSSともに羅列できる。
  • リンク先のTITLEタグからリンク名を取得。
  • データフォーマットはYAMLなので修正は簡単。
  • htreeのテンプレートライブラリを使用しているので、見た目の変更も簡単。

など。

設定項目

t.latest.htmlがテンプレート。 config.ymlが設定ファイル。

カウンタなど、差分を無視したいときのconfig.yml

./main.rb --diff-content URL

と打つと、最近の差分が表示される。差分についているXPathを、config.ymlに

- URI: http://hogehoge.com IgnorePath: theXPath

のように指定すると、次からそこを見ないでくれる。注意事項として、URI:記述を忘れるとだめ。なんでかというと、yamlの記法として、項目が一個のときは

- hogehoge1

と、項目名無しで書けるが、項目が2個のときは

- data1: hogehoge1 data2: hogehoge2

と書くのが正しいから。

- http://hogehoge.com IgnorePath: theXPath

のように書いてしまうと、"http://hogehoge.com IgnorePath:"という項目の"theXPath"というデータが一個ある、と解釈されてしまうため。

XPathは、たとえば、 <code> <html> <body>

<h1>タイトル</h1> <div>ひとつめのdiv</div> <div>ふたつめのdiv</div> <div>みっつめのdiv

<div>さらにしたのdiv</div

</div>

</body> </html> </code> となっているときに、「ひとつめのdiv」というテキストの更新を無視したいときは、

/html/body/div[1]/text()

とする。「さらにしたのdiv」を無視したいときは、

/html/body/div[3]/div/text()

とする。/は階層関係を表して、[]は同じ要素のうち何番目かを指す。text()はテキストそのものをさす。のかな。 Xpath準拠であれば、div[@class="hogehoge"]というような書き方もできるのかな。

あとは、すべてのtable要素を無視する、なんてこともできる。

/html/body//table

でOK。//は、カレント以下のすべてのノード、という意味らしい。

ソースを見て書いたわかじゃないのだけれども、たぶん、そんな感じ。

カテゴリ分けとか

yoosee.wikiの通りにやりつつ、さらに <CODE><a _attr_name="category"></a></CODE> を埋めておくと、 <CODE><a name="Diary"></a></CODE> に展開されるので、カテゴリへのリンクも貼れる。

リンク

yoosee.wiki