«前の日記(2007年12月24日) 最新 次の日記(2007年12月28日)» 編集

混沌の庭研究所

1998|06|07|08|09|10|11|12|
1999|03|04|05|06|07|08|09|10|11|12|
2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|06|07|08|09|10|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|05|06|07|08|10|11|12|
2011|01|03|09|
2012|02|03|
2013|05|12|
2019|10|

2007年12月27日 木曜日 [長年日記]

_ [Web] Yahoo! Pipesを使ってみた

以前目にした時はスルーしていたのだけど、「ニュースのRSSを全文配信で読む」という記事を読んだら面白そうだったので、Yahoo!のアカウントを取ってYahoo! Pipesで遊んでみた。最初、Yahoo! Japanのアカウントを取ったのだがログインできなかった。Yahoo! Japanは米国Yahoo!と互換性ないのかヨ。改めて米国Yahoo!でアカウントを作ってログイン成功。

まずはタイトル+αしかRSS配信されていないニュースサイトの全文配信RSSを作ってみた。1)サイドバーのSourcesからFetch FeedをDDしてURLにRSSフィードのURLを入力。2)サイドバーのOperatorsからLoopをDDして、さらにその中にSourcesからFetch PageをDD。URLにitem.link、Cut content from toにRSSフィードからリンクされているページのHTMLソースを見て、切り出す本文の頭と尻を指定。assignにチェックを入れてfirstを選択、result toにitem.descriptionを入力。3)OperatorsからRegexをDDして、Rulesに切り出してきた本文を整形する正規表現を記述。最後に、Fetch FeedからLoop、Regex、Pipe Outputの順番でパネルにある上下の丸をドラッグして繋いでいってSaveボタンをクリックすれば完成です。HTMLソースから本文を切り出す位置をどう指定するのかが肝ですな。切りやすい場所で大ざっぱに切り出してからRegexでさらに細かく切っていくのがよいかと思います。それから、イメージのリンクなど相対URLになっているのは絶対URLに直してやらないと当然表示されませんので、その辺りの置換もRegexで。そんな感じでできた一例がASCII.jp全文配信RSS。……なぜか、View ResultsでListが表示されるのとされないのがあるんだが、こいつは表示されませんな。RSSフィードから全文配信RSSを作るのは簡単なので、Google Readerに登録してあるうち全文配信されてないものをちくちくと置き換えてみました。これはいいなぁ。ただ、DOCTYPE宣言していないような似非HTMLだとエラーになって本文が取れません。とほー。

他には、RSS配信していないサイトのHTMLをFetch Pageで取ってきて勝手にRSSを作ってしまうのもわりと簡単ですな。とりあえず、自分とこのRSSを作ってみた(tDiaryのプラグインでRSS吐けばいいだけのハナシだが、それは置いておこうw)。詳しいことはソース見てやってください。Pipesが相対パスを勝手に書き換える上に、その置き換え方が中途半端だったりするのでだいぶ手間取ったが、なんとかできた。相対パスのアンカー要素を連続させると一番最後のアンカー要素だけが絶対パスに直されて、Pipe Outputに来たところで最後以外のアンカー要素からhref属性が消去されるというナゾの挙動のせいで随分悩んだヨ。おまけに絶対パスに直すのも、トップドメインを追加するだけなので完全なURLになるとは限りません。でもまあ、まだbeta版だからこれからも着々と修正されたり機能追加されたりしていくんだろうな。しばらく遊んでみようと思います。