星期五, 6月 30, 2006

[.Net]IronPython(2) - 使用 rsstoolkit

世界上總是有許多人願意提供他們的心血,我們只需要站在他們的肩膀上,就可以快速的發展出我們自己的東西來。
ASP.NET RSS Toolkit 是一個存取 RSS 的 library,其他相關的 Library 還有 RSS.Net,但是目前RSS.Net還沒有釋出 for .Net 2.0 的版本,所以我們選用 ASP.NET RSS Toolkit

首先下載並解開作者所提供的壓縮檔案,將 bin 目錄下的 RssToolKit.dll 複製到 IronPython 目錄下的 lib,以方便 IronPython 取用。
執行 IronPython,要在 IronPython 使用別人寫好的 library(Assembly),有兩個步驟,首先要載入 library,然後再 import 裡面的類別。
import clr
clr.AddReferenceToFile("RssToolkit.dll")
from RssToolkit import *


話說回來 ASP.NET RSS Toolkit的說明文件真的是可以用 Poor 來形容,裡面附的一份 Word 文件,就僅描述如何在 Visual Studio 2005 下使用而已,完全沒提及ASP.NET RSS Toolkit裡面有什麼類別,類別又有什麼屬性... Orz...
還好ASP.NET RSS Toolkit有附原始碼,Trace 一下就能瞭解一二。

所以接下來先 initialize 變數。
Python處理變數也蠻像 BASIC 的,隨寫即用:
r = RssDataSource()

連 new 都不用寫。

RSS 的構造主要是以 Channel 為主,所以 r.Channel 就表示 Channel,r.Channel.Items 就表示 Channel 裡面的各個項目。
有了這些資訊,就可以寫出取 RSS 資訊的程式了。
可是Python的迴圈該怎麼寫呢?因為我們要取出 Items 裡的每個項目。
for...next 的寫法
for i in range(5):
print i


foreach 的寫法

for item in r.Channel.Items:
print item["title"]


總結這些,我們就可以寫出一個取出 RSS 內各項目的程式了:

import clr
clr.AddReferenceToFile( "RssToolkit.dll" )
from RssToolkit import *

r = RssDataSource()
r.Url = "http://tw.news.yahoo.com/rss/realtime"

print r.Channel["title"]

for item in r.Channel.Items:
print item["title"]
print item["link"]


下次的目標,一個簡單的視窗 + 縮小到 System tray。

參考資料:

沒有留言: