xpathをいくつか書いてみた。

LDR Full Feedを紹介した前回の記事が多くのヒトに共感していただけたようでとても喜んでいます。この場を借りてLDR Full Feedを開発・公開してくださったid:mattarinおよびid:Constellationに感謝させていただきます。

LDR Full Feedの0.0.3が公開されています。

Script内部の変数をかえると多少設定ができるように。ロード中の処理など個人の好き嫌いによるものが出てきたのでon/offを設定できるようにしてみた。

  • KEY : どのキーを押すと全文表示ができるか。
  • ADCHECKER : タイトルがこの正規表現にマッチすると、広告とみなして展開しない。
  • LOADING_MOTION : trueで展開中のエントリの背景色を変化。falseで今までどおり。
  • REMOVE_SCRIPT : 読み込み時にScript要素を削除するかどうか。
  • REMOVE_H2TAG : 読み込み時にH2要素を削除するかどうか。標準ではfalseになってる。
LDR Full Feed 0.0.3 - 枕を欹てて聴く

このほかにも全文を読み込んだときにスタイル定義を反映させたり出来るようにもなっていて、至れり尽くせりという印象。また、コメント欄でAutopagerizeのようにSITE_INFOを共有するような仕組みについても言及されています。時間がかかるとのことなので、楽しみに待ってます!

さて、サイト定義をいくつか書いたので置いておきます。全文フィードしてるサイトでもホットエントリとかで読んでると部分になっちゃうのであった方が便利なんですよね。全文への展開はフィードごとではなくエントリごとに行われるので、フォーカスされているエントリがSITE_INFOにあればオッケーです。

    {
      // 産経新聞
      url:    'http://sankei.jp.msn.com',
      xpath:  '//div[@id="articleTextnews1"]/div/div[@class="child c2 cf"]/div[@class="_LSUCS"]',
      enc:    'Shift_JIS',
    },
    {
      // 読売新聞
      url:    'http://www.yomiuri.co.jp',
      xpath:  '//td[@class="main"]/div[@class="article-def"]',
      enc:    'Shift_JIS',
    },
    {
      // ZDNet
      url:    'http://japan.zdnet.com',
      xpath:  '//div[@class="article_body"]',
      enc:    'Shift_JIS',
    },
    {
      // builder by ZDNet
      url:    'http://builder.japan.zdnet.com',
      xpath:  '//div[@id="block_story"]',
      enc:    'Shift_JIS',
    },
    {
      // ITpro
      url:    'http://itpro.nikkeibp.co.jp/article/NEWS',
      xpath:  '//div[@id="kiji"]',
      enc:    'EUC-JP',
    },
    {
      // 日経トレンディ
      url:    'http://trendy.nikkeibp.co.jp',
      xpath:  '//div[@id="digital"]/div[@class="articlebody"]',
      enc:    'EUC-JP',
    },
    {
      // エアロプレイン
      url:    'http://airoplane.net',
      xpath:  '//div[@class="entry"]',
      enc:    'EUC-JP',
    },
    {
      // 情報考学 Passion For The Future
      url:    'http://www.ringolab.com/note/daiya',
      xpath:  '//div[@class="blog"]/div[@class="blogbody"]',
      enc:    'Shift_JIS',
    },
    {
      // エキサイトブログ
      url:    'exblog.jp',
      xpath:  '//div[@class="POST_BODY"]',
    },
    {
      // Geekなページ
      url:    'http://www.geekpage.jp/blog',
      xpath:  '//center/div[@class="container"]/div[@class="main"]',
      enc:    'Shift_JIS',
    },
    {
      // phpspot開発日誌
      url:    'http://phpspot.org/blog',
      xpath:  '//div[@id="con_left"]/div[@class="entrybody"]',
    },

xpathを書くときにはAutoPagerize用のXPathをかんたんに作るためのブックマークレット AutoPagerize IDE - bits and bytesで公開されているAutoPagerize IDEFirefoxの拡張XPath Checkerを使っています。
特にautopagerize IDEは枠を見ながらクリックするだけで目的のxpathを知ることが出来るのでとても便利ですよ。

gをぺちって押してLDRで全部全文読んじゃおう。

LDRで今日もぺちぺちとjを連打してフィードを読み漁っているわけですが、全文配信されてないフィードは直接サイトに行かないと読めなくてあんまりうれしくない。
これを解消するGreaseMonkeyスクリプト「g」で本文を取得するlivedoor Reader用Greasemonkeyスクリプト - F.Ko-Jiの「一秒後は未来」で公開されている。もともとはアメブロのフィードから全文を取得するためのものだったが、全文を囲むタグを指定することでそのサイトの全文を定義することができるようにバージョンアップして、愛用させてもらっていた。でも挟むタグを指定するというのがくせ者で、うまく指定できないサイトが意外と多いという問題もあった。


これを解決してくれたのがLivedoor Readerで記事全文を表示するGreasemonkey Script - 枕をそばだてて聴くで公開されているGreaseMonkeyスクリプト基本的には同じ動作をするんだけど、全文の定義をxpathで出来るというのがポイント。


デフォルトでアメブロmycomジャーナル、CNET、ITmedia楽天ブログなど13ドメインに対応している。これを増やしたいときには、基本的にはautopagerizeでSITE_INFOを作るようにして、全文取得したいサイトのURLと取得部分のxpathエンコードが必要ならエンコード方法、これらの情報を書けばいいだけ。
いくつか書いてみたので、ここに貼り付けておく。

{
  url:    'http://d.hatena.ne.jp', // はてなダイアリー
  xpath:  '//div[@id="days"]/div[@class="day"]/div[@class="body"]',
  enc:    'EUC-JP',
},
{
  url:    'http://egone.org', // Everything Is Gone
  xpath:  'id("middle_e")/table[3]/tbody/tr[3]/td',
  enc:    'EUC-JP',
},
{
  url:    'http://homepage1.nifty.com/maname', // まなめはうす
  xpath:  '//td[@class="dmain"]',
  base:   'http://homepage1.nifty.com/maname',
},

これでフィードを読み込んだところでgを押すと人形が「Loading」といって考え込むので待ってると全文が読み込まれるはず。ただし、まなめはうすはトップページ(index.html)のニュース部分を全部取得してしまう。とりあえず困ることは無いけど、かっこわるい。


これ以外に副次的な効果もある。
このスクリプトで取得すると全文がほぼそのまま持ってこれるので、画像が含まれていないフィードでも全文取得することで画像もLDRの上で読むことが出来るようになる。良い例なのがso-netブログ。

{
  url:    'http://blog.so-net.ne.jp/',
  xpath:  '//div[@id="main"]/div[@class="articles"]',
},

so-netブログは全文配信なんだけど、LDRでみると改行が無くなってしまうため、見た目はこんな感じになる。

ここでgをペコッと押すだけで、

と、上のように画像までとれてきてしまう。

こういうのは聞くより使ってみた方がわかりやすいので、是非おためしください。
gを押して全文取得する生活をはじめてみてはいかがでしょ?

はてなダイアリーのRSSってフィードリーダーに登録するのがめんどくさい。

前々から思っていたんだけど、思い出したので書いておく。

はてダのRSSFirefoxでアドレスバーの右側にあるRSSボタンを使って登録しようとすると、RSSだとヘッドライン(左の画像)、RSS2だとXMLが生で表示されて(右の画像)直にフィードリーダーに登録することができない。

どっちでも表示しておいてフィードリーダーブックマークレットから登録するか、フィードリーダーに直接URIを打ち込めば登録できるんだけどわざわざそんなこともしたくない。

実際、それがめんどくさくて後回しにしたまま放置してるダイアリーがいくつかある。


で、これだけなら何となくだけどそういうもんなんだ。はてダのRSSは仕方ないかと諦めもつく。かもしれない。だけどほんの稀にRSSボタンからなんの苦もなくフィードを登録することができることもある(下の画像)。
このときの条件がよくわからない。今回はこのことを再現するために何度かトップページ(http://d.hatena.ne.jp/toshi123/)開き直して*1RSSボタンを押してみたら両方のパターンが再現された。特に出現条件みたいなものはないのかもしれない。

問題ってほどのことでもないかもしれないけど不便だからLDRにappendするリンクを追加するグリモンでも書こうかなあ。

*1:リロードだと最初の状態で固定??

コメントスパム拒否知らんかった。


はてダは書きやすくて良いんだけど、コメントスパムがたまるのがタマにキズだよなーとずっと思っていて本当にごめんなさい。ダイアリーの管理画面にコメントスパム拒否設定が普通にあることに今頃気がついた。
しかも「拒否する」の設定にしておいて、コメントを誰からも受け付ける「ゲスト」設定にしているとコメント投稿時に表示されてる文字列の入力を求めるようになるなんて全然知らなかったよ。

というわけで新年になったことだし、コメントスパムを拒否するようにするとともに表示形式もブログ形式に変更してみました。

ところでコメント拒否についてはヘルプにも

「スパムコメント・トラックバック拒否」を設定するための手順は以下のとおりです。

「管理ツール > 日記の設定 > コメント・トラックバック設定」から、「スパムコメント・トラックバックを拒否する」にチェックを入れてください。コメントが拒否された場合には、拒否されたことを示すメッセージが画面に表示され、トラックバックが拒否された場合には、送信元にエラーが返ります。

はてなダイアリーコメント・トラックバックスパム対策 - はてなダイアリーのヘルプ

ちゃんと書いてあるのだけど、どうしてこれがデフォルトじゃなくてオプションなんだろ? コメントスパム拒否はもはや一般的だと思うし、サーバ負荷的にも拒否った方が軽いと思うんだけども。

さすがはてなというべきか。

今年もこんな感じでグダグダでしょうが、よろしくお願いします。

Tombloo0.0.9が動いた!(クララが立った的に

昨日動かないよーって騒いだTombloo0.0.9だったんですがid:kkk9から

僕は拡張からNoScriptを外したら直りましたよ。お役に立てなかったらごめんなさい。

とコメントをいただきました。お役に立てないなんてとんでもないです。
うちの環境でもNoScriptをはずしたら無事に動きました! これでウキウキTumblrライフに。

一応に入れている拡張もさらしておこうと思います。

結構入ってるなあ。
1回まとめておいた方が良いかしら。

Tombloo 0.0.9が動かない。

Tombloo 0.0.9 - 実用LDRでFlickrフィードのサムネイルを拡大するGreasemonkeyスクリプトを読んでLDRから直接Flickerの画像をTumblrにポストしたいと思ってTombloo 0.0.9を導入してみたんだけど、うまく動かない。


新しいTomblooでは右クリックからpostのタイプを選べるようになってるんだけど、コンテキストメニューから選ぼうとしても右の画像のように何も選べない。「Share」でTumblrに投稿しようとしても何もおきない。という状況。
関係があるかどうかわからないけど、インストールのときにダウンロードエラーが出て、仕方なくいったん保存してからインスコしたのが良くなかったのかな。バージョンアップを怠っていたので0.0.6からのアップデートでそれがいけなかったのかと思っていったん全部消してから再インストールしても結果は同じ。

ちなみにDLしたURLはこれ。
http://www.asahi-net.or.jp/~xe4r-kmt/extension/tombloo/tombloo.xpi

ちょっと現時点でお手上げなので、棚上げにしたいけどバージョンダウンもできない(ログがない)のでへっぽこTumblrに逆戻り中。

【追記】
環境書き忘れた。
WindowsXP上のFirefox2.0.0.9です。