muzieのRSS作成手順

結論

muzieの指定ページのRSSを吐くモジュールをPipesで作成した。
おそらく他の人でもコピーすれば使えるはず。

ベース

Yahoo! Pipes の Page Fetch モジュールでスクレイピングし放題 - てっく煮ブログ 跡地にて、「RSS配信してなくてもPipesRSSを作成できる」という話題、すなわち「それPipes」を見たので、「それならば、muzieもこれでチェックできるんじゃなかろうか(muzieRSSに対応してないっぽく、さらに"なんでもRSS"では更新しすぎる)」ということでやってみる。

手順

サンプルコード解析

さきほどのページでリンクされてたPipesのページに移行。
「View Source→Save a copy」で自分のところに持ってきたが、「Clone」で一発だったのかもしれない。まぁ、どうせコードを見るので気にしない。


で、先ほどのページの解説を読みながらコードを眺める。
RSSは基本的にただのXMLだったはずなので、その構造の解説を探したところRSSを配信しよう - phaのPHPとか自習室 - はてな自習室で紹介されていた。で、これらをもとに見ていくと、だいたい以下のような処理をしている模様。

  • FetchPage
    • URLで指定したページのソースを持ってくる
    • Cut 〜に対応する部分を切り出す
    • Split 〜の部分を一つのフィード(item)とみなして切り分ける
  • Rename
    • 切り分けたやつを、それぞれtitle、description、linkにコピーする(contentは不要なのでRenameで破棄?)
  • Regex
    • あとはソースコードの形式に応じて「title」「link」「description」を適切な形に変換
muzieのHTML解析

今回はhttp://www.muzie.co.jp/cgi-bin/artist.cgi?id=a047541をサンプルとして解析する。他のmuzieのページも同じ構造のはず。
「右クリック→ページのソースを表示」と実際のページを比べつつ、どれを「タイトル」「リンク」「要約」にするかを考える。上方にある「最新の楽曲」っぽいのでも良かったが、ひとまず下のほうにある「楽曲一覧」っぽいところをRSS化する。


「タイトル」についてはそのまま「TITLE:」のところで良いだろう。「要約」もその下にある文章で良い。だが「リンク」はどうすべきか。迷った挙句、「MP3ダウンロード」のリンクを選ぶことにした。(リンク先はあとで修正されました)

コンバート

さきほどクローンした部分を以下のように変更する。(<と>は実際には半角の方)

  • このPipeのタイトルと説明
    • 左上の名称と、右上のPropertiesの中身を変更する
  • Fetch Page
    • URLを今回のページにさしかえる
    • 「main02」の中が楽曲一覧のようなので、Cut 〜では「<div id="main02">」から終端までを選ぶ
    • 「"marr04 marl04"」が1楽曲のようなので、Split 〜では「<divclass="marr04 marl04">」とする
  • Rename
    • ここはサンプルコードと全く同じ
  • Regex
    • title
      • 場所
        • 「TITLE:」の先を指定すればよい
      • 基本的な考え方
        • 「〜」「TITLE:」「ここを採用」「〜」
      • HTMLでの対応
        • 「〜」「TITLE:</span>」「ここを採用」「</strong>〜」
      • 正規表現(実際には、変なものを捕まえないようにもう少し長い)
        • 「.*」「TITLE:</span>」「([^<]+)」「.*」
    • link
      • 場所
        • MP3と書いてるボタンのリンク先を指定する
      • 基本的な考え方
        • 「〜」「ボタンのリンク先を採用」「〜」
      • HTMLでの対応
        • 「〜」「<a href=/download/〜>と書いてあるところを採用」「〜」
      • 正規表現(変なのを捕まえないように長くしたいところ)
    • description
      • 場所
        • 共通表示の下にある文章
      • 基本的な考え方
        • 「〜」「あの文章を採用」「〜」
      • HTMLでの対応
        • 「〜」「<div class=listentxt>の中の最初の<p>の中を採用」「〜」
      • 正規表現
        • 「.*」「<div class=listentxt><p>と</p>の間」「.*」
        • サンプルと同じ感じで、「<div class=listentxt><p>以前を削除」「</p>以降を削除」として抽出
  • Filter
    • 必要ないかもしれないけど、一応サンプルコードのまま入れておくことにする
実行確認&修正

さっそく確認したところ、以下の問題を確認。

  • リンク先に飛べない
    • エラーページに飛ばされる
  • 他のidのページも確認したい場合に追加が面倒
    • 処理全体をまるまるコピーする必要がある


ということで、以下の変更を加える

  • リンク先をベースとなるページに変更
    • 曲一覧のところを指定しても良かったかも
  • 処理部分をモジュール化し、URLの指定だけ外部から受け取るようにした
    • User inputsのURL Inputを利用


で、できたのが以下。

使い方

自分で指定したページのRSS配信を行いたい場合、以下のようにして行います。

  • モジュールのコピー
  • モジュールを呼んで、結果をUnionでつないで出力
    • 「Create a pipe」で新しくPipeを作成し、「My pipes」からさきほどのモジュールを選びます。
    • そこにRSSを配信させたいページのURLを入れ、「Pipe Output」につなぎます。
    • 複数のURLを入れる場合、それぞれにモジュールを作成して、Operatorsにある「Union」でまとめたあと「Pipe Output」につなぎます。

メモ

ひとまず、Pipesでの作業のログは取れた。あとで他のサイトのもちょこちょこやるので、それもログ予定。紹介と解説がごっちゃになっているので、そこは分離すべきだったかもしれない。


タグは実験の結果「・」を先頭に付けることにした。「+」だと、「++」が「+」よりも先に来てしまって木構造っぽくないが、「・」ならば、その後に続くのが英語である限り木構造っぽくできるので。


コードを書いた場合、どこに上げようか。googleまわりが安定だろうか。Flashファイルが埋め込めるかのチェックが必要になる。たしか、どっかで「はてなFlash」というのも見たので、そこらへんも後でチェック。


Pipesは「Publish」というやつを選ばないと他の人からは見えないことが判明。必要な分はPublishで公開した。


プロフィールを少しだけ書いた。案外、書く事がない。プロフィール画像は何か用意した方が良いかもしれない。

身の回りのページをRSS対応にしてみる。

追記:「Dr.森川の人間風車」の切り取り部分を本文のみにしました。

Wii

Wii.com JP - 移転いたしましたRSSを配信していないので、調査。Wii.com JP - 移転いたしましたRSS化することにする。構造的にhttp://blogwatcher.pi.titech.ac.jp/nandemorss/が使えそうだったので、こちらでRSS化することにする。


結果はこちら

Dr.森川の人間風車

http://www.muumuu.com/members/morikawa/index.htmもやってみる。過去ログもあるが、年ごとに違い、さらにindex.htmlとして採用してある間は過去ログのリンク先もindex.htmlとなっている(パーマリンクができていない)。
いろいろ考えた結果、「トップページだけ取れれば良し」ということで、index.htmlを対象にRSS化。


成果はこちら

だだもれ

だだもれRSS化。「なんでもRSS」でできそうでもあるが、日付ごとのフィードになりそうなので、Pipesでやる。


成果はこちら

補足

とりあえず作ってみたものの、まだきちんと確認はしていないので、あとで修正するかも。