はてなダイアリーが発行するRSSフィードの内容は、書いてる人が「全文配信」と「要約のみ配信」の2種類から選べます。「要約のみ配信」のはてなダイアリーをRSSリーダーで読むと、長い本文は途中までで切れ、ASIN記法や貼り付けた画像なども展開されず、記法や画像のURLをそのまま見ることになります。
はてなダイアリーの現在のデフォルトは「全文を掲載する」ですが、「要約のみ配信する」だった時期もあり(参照:「はてなダイアリーの提供しているRSS - はてなダイアリーのヘルプ」)、またそのほかの理由で「要約のみ配信」を選んでいる人もいます。
でも読む側としては、できればRSSリーダーで全文を読みたい!
ということで作ってみました。「要約のみ配信」のダイアリーでも、RSSリーダーで全文読めるようにするYahoo! pipesです。日記の表示モードが「日記モード」「日記モード・見出し別ページ」「ブログモード」のどれでも使えます。
「はてなダイアリー全文取得パイプ」の使い方
- 「Diary URL(not RSS)」のテキストボックスに、全文取得したいダイアリーのURLを入れます。うっかりして、特定の日付やRSSのURLを入れても大丈夫なように、いちおう最低限の処理をしています。
- 「Run Pipe」ボタンをクリックします。
- 結果が表示されたら(表示結果が変でも大丈夫です)、登録先に合わせて「+My Yahoo!」なり「+Google」なりをクリック。素のRSSを取得したいときは「More options」をクリックして「Get as RSS」を右クリック→リンク先をコピー。
RSSのタイトルは「はてなダイアリー全文取得」で固定なので、RSSリーダーへの登録時に適宜変更してください。
ただし、このパイプははてなグループでは使えません。コメントの手前でHTMLの切れ目を見つける、汎用的な方法があればいいんですが。
自分のダイアリーのRSSが全文配信かどうかを確認する方法
ところで、自分のダイアリーがRSSに全文を配信しているのかどうか、ご存じない方もいるかもしれません。確認してみましょう。
「日記の公開設定」(http://d.hatena.ne.jp/あなたのユーザーID/configpermission)にある「RSSの公開設定」−「RSSフィードへの全文掲載」欄を見てみましょう。「RSSフィードに全文を掲載しない(要約のみ掲載)」/「RSSフィードに全文を掲載する」という選択肢があります。
個人的には「全文を掲載する」をおすすめしたいです。
パイプはこんな処理をしています
- 入力されたURLの末尾に「rss」をつけます。入力されたURLの「http://d.hatena.ne.jp/ユーザーID/」以下になにかついていたら、まずそれを除去します。
- 得られた「http://d.hatena.ne.jp/ユーザーID/rss」を「URL Builder」と「Fetch Feed」の各モジュールに素通りさせてRSSフィードとし、その内容を取得します。
- フィード内の「item.link」には各記事へのURLが含まれます。そのURLは「日記モード」のダイアリーだと、「http://d.hatena.ne.jp/ユーザーID/日付#p1」というように「#」が区切り文字に使われているので、「Regex」モジュールで「/」に置換します。
- 「Loop」モジュールに入り、各記事のURLに対する処理を行います。各記事の個別ページを取得して、その中の「<div class="section">」から「<!-- google_ad_section_end -->」までを日記の本文と考えて取り出し(「Fetch Page」モジュール)、「item.fetch」として出力します。
- 「item.fetch.content」には、日記の各記事の本文がHTMLも含めて格納されています。その冒頭から「</h3>」までは個別記事のタイトルなので除去します(ひとつ前ではなくここで処理するのは、日ごとに1エントリのみで、h3要素となる個別の記事タイトルを持たない日記もあるためです)。またブログモードのコメント欄は上に出てきた「<!-- google_ad_section_end -->」の手前にあり、日記にコメントが登録されると内容が変化→再取得、ということになってしまう気がするので、「<p class="sectionfooter">〜</p>」を除去します。これらの除去処理には「Regex」モジュールを使います。
- 「item.fetch.content」を「description」に「Rename」し、RSSとして出力します。
既知の問題
ユーザーIDに「_」を含む方のダイアリーは、Yahoo! pipes内でRSSを取得できないようです。本当にそういう問題なのか、また解決方法などありましたらご教示ください。
参考にした記事
- 「Yahoo! Pipes で強制全文配信化 - てっく煮ブログ」(d:id:nitoyon:20071221:fulltext_feed)
というか、この記事とここで紹介されていた「Pipes: Ameblo Content All」がなかったら、今回のパイプは自分にはとても作れなかったでしょう。感謝感謝です。
パイプがほぼ完成してから見つけたページ。次はお世話になるかも。
ほかに作ったパイプ
以前こんなパイプも作りました。これも手直しすれば、汎用的な言葉をウォッチするパイプにできるかも?
- 「Pipes: 『昭和のロケット屋さん』言及ブログ」(くわしくはd:id:Imamura:20071204:rocketrssを参照)
2/4追記
パイプを改良しました。また、新しいパイプも公開しました。
- →「「はてなダイアリー用パイプ」を更新+バリエーションを公開 - Imamuraの日記」(d:id:Imamura:20080204:pipe)
2010年10月追記
こんなパイプも作りました。これはかなりいいです。おすすめです。
- →はてなダイアリーの長年日記をRSS出力するpipeを作りました - Imamuraの日記(http://d.hatena.ne.jp/Imamura/20100814/naganenpipe)