維基百科:維基百科工具/Ultrafilter
Ultrafilter是一個維基百科的過濾工具,它可以根據你的興趣設置,通過過濾最近更新以獲得你感興趣的條目變化或者討論線索。它提供以下四個服務:
- 根據類目設置,過濾最近更新,獲得該類目下的條目變化
- 根據類目設置,過濾最近更新,獲得該類目下的最新討論
- 用戶以前參與過某條目的討論,如果該條目再有討論,則通知用戶
- 它還附加了一個專門服務於維基百科的縮址服務
維基百科用戶既可以訪問外部網站獲得上述四個服務,也可以通過使用用戶腳本將這些功能集成到維基百科內部。
用戶腳本
[編輯]Ultrafilter提供的服務都可以通過站內用戶腳本(User Script)集成進來,腳本提供了以下功能:
- 瀏覽本用戶關心的分類更新和討論
- 瀏覽本用戶的關注的討論
- 有新討論時,浮現警示條提醒用戶
功能預覽
[編輯]背後的想法
[編輯]沃德·坎寧安在C2上曾經寫到,可觀察性是Wiki的一個基本特性。在維基百科及其他眾多Wiki,可觀察主要是通過最近更新來實現的。早期的維基百科參與者有限,那時通過最近更新可以有效的獲知你感興趣的變化;但隨著維基百科越來越大,最近更新數據量巨大,它逐漸失去了早期的作用。這是作者開發本工具的主要意圖。
另一方面,可有效觀察不只是服務於維基百科站內用戶;隨著RSS的發明,混搭(Mashup)和開放API隨之流行,對外界有意義的RSS輸出,成為一個站點宣傳自己的有力工具。所以,有效觀察,對站內外用戶是同等重要的。
原理
[編輯]獲得某分類的條目及討論更新並不困難,這裡值得提到的是我們的更新並不只是跟蹤單單一層分類,而是跟蹤其下的三層子分類的所有變更。沿著分類樹(其實是DAG)傳播變化三層,是根據經驗確定下來的。下溯的層級太少則不能有效的跟蹤變化,而下溯的層級太多則容易出現錯誤。
比如:「黃霑」-「分類:金馬獎獲獎者」-「分類:金馬獎」-「分類:台灣電影」-「分類:台灣文化」-「分類:台灣」,如果我們傳播變化的層級太多,最終就會讓香港人「黃霑」出現在分類「分類:台灣」的變化裏,這是有違直觀的。
安裝步驟
[編輯](一)在你的Vector.js或者Mononbook.js引入下面的Javascript。
importScript("User:Mountain/shorturl.js");//如果需要缩短的维基百科条目网址
importScript("User:Mountain/ultrafilter.js");
addOnloadHook(function() {
$j(function() {
ultrafilter('数学|物理学|哲学');//填入你感兴趣的分类,用|分隔,注意填入项目必须在维基百科存在且繁简体一致。
});
});
(二)在你的用戶頁增加一個子頁面Ultrafilter,裡面的內容如下(三項內容可以調整成自己喜歡的順序):
__NOEDITSECTION__ {| style="width:100%;" border="0" |- |style="width:33%;vertical-align:top;" | ===分类更新=== <div id="ultrafilter-rc"></div> |style="width:33%;vertical-align:top;" | ===最近讨论=== <div id="ultrafilter-rt"></div> |style="width:33%;vertical-align:top;" | ===关注的讨论=== <div id="ultrafilter-ntf"></div> |}
示例可以參考 User:Mountain/vector.js 和 User:Mountain/Ultrafilter 。
開放API
[編輯]Ultrafilter.org開放了以下API供外界使用:
- 分類更新: http://ultrafilter.org/api/rc/zh/:CAETGORIES/:UNIXTIMESTAMP
- 分類討論: http://ultrafilter.org/api/rt/zh/:CAETGORIES/:UNIXTIMESTAMP
- 用戶關注的討論: http://ultrafilter.org/api/ntf/zh/:USERNAME
- 父分類查詢: http://ultrafilter.org/api/cat/zh/:CAETGORY/parents
- 子分類查詢:http://ultrafilter.org/api/cat/zh/:CAETGORY/children
其中的參數說明如下:
- :CAETGORIES :多個分類,以「|」分隔(分類必須存在且繁簡體必須和站內一致)
- :UNIXTIMESTAMP :用整數表示的時間,從1970年1月1日零時起到該時間的毫秒數
- :USERNAME :用戶名(不帶User前綴)
- :CAETGORY :一個分類(分類必須存在且繁簡體必須和站內一致)
數據的輸出格式為JSON和JSONP,RSS輸出還在開發中。