正如我們都知道的,全文Feed最有用。
但是,世界上的大部分Feed,都是摘要Feed,甚至是標題Feed。我們只好自己動手,製作全文Feed。
傳統的製作方法非常麻煩,需要針對不同的網站,編寫不同的內容提取規則。要是有一個傻瓜型的"全文Feed生成器",把摘要Feed往裡面一扔,全文Feed就自動生成了,那該多好。
FiveFilters.org提供的生成器,大概最接近於這種要求。
舉例來說,網易的社會新聞Feed(http://news.163.com/special/00011K6L/rss_sh.xml)是一個摘要Feed。
我們把這個網址,送進FiveFilters.org,點選"Create Feed"按鈕,全文Feed就自動產生了!(檢視效果)
但是,這個生成器並不是百用百靈,比如新浪的Feed(http://rss.sina.com.cn/news/society/focus15.xml)就無法抓取全文。
好在今年3月份,它開源了。作者Keyvan Minoukadeh將所有程式碼都公開了,所以如果遇到不能生效的Feed,現在我們就可以修改原始碼了。因此理論上,幾乎所有的摘要Feed都可以自動轉成全文Feed了。
原始碼存放在launchpad.net上,需要安裝Bazaar的客戶端才能下載。我為大家提供方便,把它們壓縮成一個zip檔案,點選下載(1.0版,217KB)。
下載後,上傳到支援PHP 5.2的虛擬主機上,就可以直接使用。使用的時候,需要將cache子目錄設為可寫(許可權777)。在config-sample.php檔案中,可以檢視設定選項,修改預設值後,將檔名改為config.php,就會生效。(不修改亦可,config檔案並不是必需的。)
這個程式的核心是readability.php檔案,它負責判斷當前網頁中,那一部分屬於頁面的主要內容,然後將其抓取出來。實現原理照搬了arc90的ReadAbility指令碼。簡單說,思路是這樣的:1)檢查頁面中所有p元素的父容器;2)根據相關特徵,為每一個父容器計算一個特徵值;3)特徵值最大的容器,就是放置主要內容的容器。
具體實現請閱讀程式碼,原始碼寫得非常清晰,而且有詳細的註釋。如果遇到不能抓取全文的Feed,你就要自己修改readability.php,增加相應的規則。比如,在我提供下載的程式碼中,我就設定了新浪網的規則,新浪網的全文Feed就能自動生成了。
這個程式使用的是AGPL許可證,這就是說你可以自由地使用、修改、釋出這個程式,但是隻要你向他人提供基於這個程式的服務,你就必須公開原始碼。
作者Keyvan Minoukadeh允諾,只要使用者向他捐款200美元,就釋出2.0版。如果你喜歡這個程式,建議向他捐款。
P.S.
這幾天,我還發現了一個非常優秀的開源相簿軟體ZenPhoto,也推薦使用。
UPDATE(2010.6.3)
Full TEXT RSS 1.5版下載(283KB)
UPDATE(2010.11.10)
Full TEXT RSS 2.1版下載(362KB)
(完)