6 posts tagged “plagger”
Nobiさんこと林信行さんがMicrosoftのサイトに連載されている「Apple's Eye」を、PlaggerでRSS化してみた。
Nobiさんの記事は、はてブに「林信行」というタグでブックマークされているので、そのフィードをRSSリーダで読ませていただいている。
しかし、Microsoftの「Apple's Eye」だけは何故かはてブにブックマークされてなく、おまけにMicrosoftのサイトにはフィードも存在しないので、ちょっと不便に感じていた。
「Apple's Eye」の最新記事はPerrmalinkが存在せず、ブックマークしても次の記事が投稿された時点でURLが変わってしまうのが、ブックマークされてない理由だと思う。
でも、やっぱりRSSリーダで読みたいよなぁ。
わざわざMicrosoftのサイトに行くの面倒だし。
そこで、Plaggerで次のようにフィルターを書いて、「Apple's Eye」の最近の記事をRSS化してみた。
- assets/plugins/Filter-EntryFullText/mactopia_japan_nobi.yaml
# Mactopia Japan : Apple's Eye
# http://www.microsoft.com/japan/mac/column/default.mspx
author: Koji Kawade
custom_feed_handle: http://www\.microsoft\.com/japan/mac/column/contents/contents\.mspx
custom_feed_follow_link: /japan/mac/column/(contents/(19\d|2\d\d|3\d\d)|default)\.mspx
handle: http://www\.microsoft\.com/japan/mac/column/(contents/\d\d\d|default)\.mspx
extract: <h2>(.*?)</h2>(.*?)\[(\d{4}.*?\d{1,2}.*?\d{1,2}).*?\].*?</p>(.*?)<a href="/japan/mac/column/contents/contents\.mspx">
extract_capture: title title2 date body
extract_after_hook: |
$data->{date} =~ s!<.*?>!!g;
$data->{date} =~ s! !!g;
$data->{title2} =~ s!<.*?>!!g;
$data->{title} .= " : " . $data->{title2} if $data->{title2};
$data->{title} =~ s!<.*?>!!g;
extract_date_format: %Y年%m月%d
config.yamlは次のように書いた。
global:
cache:
base: /path/plagger
assets_path: /path/plagger/cpan/usr/bin/assets
timezone: Asia/Tokyo
plugins:
- module: Subscription::Config
config:
feed:
- url: http://www.microsoft.com/japan/mac/column/contents/contents.mspx
- module: Filter::EntryFullText
- module: Publish::Feed
config:
format: RSS
dir: /path/plagger/feed/
filename: mactopia_nobi.rss
自宅のMac OS Xでcronを定期的に実行してRSSを生成しているのだが、自宅のMacは24時間立ち上げている訳ではないので、どなたか24時間稼働しているサーバで実行し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です)。
Dapperというツールがあるのを知った。
HTML中の特定の項目を抜き出してRSS等に変換してくれるツールらしい。
早速試してみた。
最近のHikkiの日記が毎日のように更新されているのだが、HikkiのWebサイトはRSSが無いので、更新されたことがわからない。それで、Dapperを使ってHikki のメッセージをRSS化してみることにする。
やってみると、タイトルとリンクのみのRSS化はとても簡単で、10分もかからなかった。
しかし、日付がタイトルになったリンクもRSS化されたり、余分のところまでRSS化されて今ひとつ。
Hikkiの日記のRSS化は、Dapperだけではどうもうまくいかない。
Y! pipesはDapperよりも簡単。5分ほどでできた。
完成したRSSがこれ。タイトルのみのRSSだが更新を知りたいだけならこれだけでも便利。
http://pipes.yahoo.com/pipes/pipe.run?_id=fLrjga4n3BGXlL6nX0sBXw&_render=rss
でも、これって、「それPla」ですよね。
MacにPlaggerをインストールしている(ほとんど活用してないのだが)ので、DapperとY! pipesでやったことを次回はそれPlaでやってみたいと思います。
microformats を使うと、若い娘に「へーすごーい」とか言ってもらえてモテモテになるらしい(ウソ)。
そのmicroformatsが「第九回XML開発者の日」で取り上げられるということなので、XML開発者でも何でもない普通の人である私が、恐れ多くもギークの巣窟に先週金曜日潜入してきました。
RESTやmicroformats の話もすごく勉強になりましたが、一番グッときたのは、miyagawa さんのPlaggerのプレゼンです。
宮川さんは、Plaggerとは何かについて次のように説明されておられました(メモを取っていたわけではないので正確ではないですが)。
PlaggerはUNIXのpipeをイメージしてもらえばよい。
Microsoft CTOのレイ・オジーも、「RSSは“インターネットのUNIX pipe”となる可能性がある」と言っている。
RSSはWebにおいて標準的なIOである。
PlaggerはWeb2.0のためのUNIXシェルのようなもので、perlがインターネットでglue(糊)の役割を果たしたように、Plagger = The duct tape of the web.である。
何か大げさな仕組みを作ってWeb同士を結合さようということではなく、UNIXのシェルのようにシンプルなものを組み合わせることにより、ユーザがやりたいことを自由に、そしてすばやく実現できる、それはWebの世界を繋ぐための強力な接着テープとなるんだ、ということだと思います。
話を聞いていて、何かワクワクするすごい可能性を感じました。仕事や生活の色々なところで使えそうで、とってもハッピーになれそう。
そして、印象に残ったのは「仕事ではない。自分が楽しいからやっている。今くらいのユーザ数の時が一番楽しいので、ユーザ数はこれ以上増えてほしくない。」という言葉でした。
本当にすばらしいプレゼンでした。
当日のプレゼン資料は、宮川さんのブログで見ることができます。
で、早速PlaggerをWindowws XPにインストールしてみました。今日からPlagger lifeが楽しめます。
インストールには結構苦労しましたので、それについては後日書こうと思います。
参考:
- 「第九回XML開発者の日」の詳細なメモ(by StLさん)