3 posts tagged “hikki”
HikkiのサイトもRSSを配信するようになったのですね。
というわけで、要望が多かったらしいRSSとやらをつけました!
更新されるとすぐ分かる、ってことか?
なんかまだよく分かりません。勉強します、はい。
以前、こんな記事を書いた。
実は今まで、自分一人の為だけに1時間毎にPlaggerをぶん回してRSSを生成していたのだが、それも必要なくなった。
先日の「Plaggerで宇多田ヒカルの日記をRSS化」のエントリーに、大旦那 otsune さんから「はてブ」でコメントをいただいた。
はてなブックマーク - Plaggerで宇多田ヒカルの日記をRSS化 - koji's blog
linkの値をどうすれば参照できるかわからなかったのだが、otsuneさんのページのこの辺を参考にしてやってみたら、うまくいった。
- assets/plugins/Filter-EntryFullText/u3music_com_message.yaml
# Message from Utada Hikaru / Utada
# http://www.u3music.com/message/
author: Koji Kawade
custom_feed_handle: http://www\.u3music\.com/message/
custom_feed_follow_link: index\.php\?m=1&d=\d+j\.xml
handle: http://www\.u3music\.com/message/index\.php\?m=1&d=\d+j\.xml
extract_xpath:
title: //div[@class="blue"]/text()
date2: //div[@class="blue02"]/text()
body: //div[@class="txt"]/..
extract_after_hook: |
$data->{year} = $args->{entry}->link;
$data->{year} =~ s!http://www\.u3music\.com/message/index\.php\?m=1\&d=(\d{4})\d+.\.xml!\1!;
$data->{date} = $data->{year} . "." . $data->{date2};
$data->{body} =~ s!<td>(.*?)</td>!\1!;
linkの値は「$args->{entry}->link」で参照できるようだ。
linkから年に当たる箇所を取り出すのは、
$data->{year} =~ s!http://www\.u3music\.com/message/index\.php\?m=1\&d=(\d{4})\d+.\.xml!\1!;
とやって、不要な部分を取り除いている。
先日のものよりこちらの方がスッキリしていいよね。
先日書いたエントリー「Dapper と Yahoo! pipes で Hikki の日記をRSS化する」に対して、はてブで
「まず"plagger 宇多田"で検索。」
というコメントをいただいた。
で、早速"plagger 宇多田"で検索してみた。
Plaggerで全文取得 (1)・宇多田ヒカルの日記を攻略する | Glassleaf (2007年06月09日)
というエントリーに対して、かの大旦那 ID:otsune さんが日付を取得しようと頑張ったのですがどうしても出来なくてそのままにしてあります。誰か教えてください。
subtech - otsune's SnakeOil - 宇多田ヒカルの日記用EFTを改造
というエントリーを書かれていた。extract_date_formatをコメントアウトしているのは理由が有って。DateTimeは年が無いとエラーを出して認識できないから。
monthとdayがあるけどyearが無い場合のPlagger::Date処理についていろいろと話したけど。
でも、ソースを眺めてみると、サイドバーのリンクのところに、使えそうなyearの情報があるではないか。
<td valign="top"><a href="index.php?m=1&d=2007070321452j.xml" class="m">クマゼミ<br>7.3(Tue) 21:45 J</a></td>
これをyearとして利用するようPlaggerのFilter-EntryFullTextを見よう見まねで書いてみた。ちなみに、「\2」は正規表現の前方参照。サイドインデックスの日付と本文の日付が一致したら、サイドインデックスにあるそのURLの一部をyearとしている。
- assets/plugins/Filter-EntryFullText/u3music_com_message.yaml
# Message from Utada Hikaru / Utada
# http://www.u3music.com/message/
author: Koji Kawade
custom_feed_handle: http://www\.u3music\.com/message/
custom_feed_follow_link: index\.php\?m=1&d=\d+j\.xml
handle: http://www\.u3music\.com/message/index\.php\?m=1&d=\d+j\.xml
extract: <a href="index\.php\?m=1&d=(\d{4})\d+j\.xml" class="m">.*?<br>(.*?) J</a>.*?<div class="blue">(.*?)</div>.*?<div class="blue02" align="right">\2</div>.*?<!--Photo - start-->(.*?)<!--Photo - end-->.*?<div class="txt">(.*?)</div>extract_capture: year date2 title photo body
extract_after_hook: |
$data->{date} = $data->{year} . "." . $data->{date2};
$data->{body} = $data->{photo} . $data->{body};
あまりエレガントではないけど。
ちなみにconfig.yamlは以下のような感じで書けばよい。
global:
cache:
base: /path/plagger
assets_path: /path/plagger/cpan/usr/bin/assetstimezone: Asia/Tokyo
plugins:
- module: Subscription::Config
config:
feed:
- url: http://www.u3music.com/message/
meta:
follow_xpth: //div[@align='center']//a
- module: Filter::EntryFullText
- module: Publish::Feed
config:
format: RSS
dir: /path/plagger/feed/
filename: u3music_com_message.rss
CRONで1時間に一度実行してRSSを生成し、かつあるサーバにFTPでアップロードするようにした。
(自分専用のRSSです)。