MAGICでRSSを読む
なんか最近、RSS付いてまして、新しくリリース予定のプログラムに「RSSを読み込む機能を付けたら便利かな?」なんて考え、ちょっとプログラムしてみました。下がその画面です。

MAGICでRSSを読むには、Blob項目を「HTTPGet (url,head...)」で更新し、それをXMLダイレクトアクセスで処理すればOKです。(実際はBlobを更にファイルに出力してそれを指定したんですけど、「項目」でも読めたような気もする・・・。けど、うまくいかなかった・・・。)
urlは自分のサイトのRSS2.0のファイル(http://www.eternaldesign.jp/index.xml)で、今のところここしか読まないのですが、RSSの書式は共通ですから、ひとつ共通プログラムを作っておけばどんなサイトでも取得できますね。(RSSリーダーが出来る)
さて、実際の読み方ですけど、チャンネルの情報(タイトル、リンク、記述、言語、イメージ・・・等)は、「XMLGet (0,1,'rss.channel.title')」とか、「XMLGet (0,1,'rss.channel.link')」のように指定して取得します。
アイテムの情報は、子タスクを作ってループさせ、メモリテーブルに書き出します。更新の逆順で並んで列挙されてますから、それを順に読んでいけばOKです(勿論、更新時刻「pubDate」で並べ替えても良いんですが・・・)。一つ変数を作ってまわせばOKです。それぞれの項目を取得します。タイトルが「XMLGet (1,1,'rss.channel.item['&Trim (Str (変数,'2'))&'].title')」、リンクが、「XMLGet (1,1,'rss.channel.item['&Trim (Str (変数,'2'))&'].link')」というように、読んであげればそんなに面倒ではないですね。
アイテムを取得した順にテーブルに表示してあげれば一覧が表示されます。作ったプログラムでは、各レコードに付けたボタンをクリックすると、そのページを表示するような仕組みにしてあります。
画面を見てもらえば分かると思いますが、「分類」とか、「メンバー」とかRSSには無い項目があります。
自動的にアイテムを出力するような仕様(PloneとZopeがしてくれる)となっているので、ドキュメントだったり、ニュースだったりします。それとポータル全体が対象なので、別製品の情報があったりもします。それらを分類したかったんですが、頼りになりそうなのはURL「rss/channel/item/link」だけだったので、フォルダ名やファイル名で自動的に振り分けるようにしました(うちのサイト専用の仕様ですね)。それと、メンバーしか見れないページも一緒に出てしまうので、それは色分けしてみました。
こういったところも元のxmlのスキーマでなんとかできると良いですね。
ということで、次のバージョンから実装されます。「RSS情報」というタブを押したときに、このサイトに接続しますので、予めご了解ください。
P.S
RSSを公開してしまうと、ちょっとした修正でも、いじったことがバレてしまいますね。まぁしょうがないですけど・・・。w
- Category(s)
- dbMAGIC
