維基百科:維基百科工具/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.jsUser:Mountain/Ultrafilter

開放API

Ultrafilter.org開放了以下API供外界使用:

其中的參數說明如下:

  • :CAETGORIES :多個分類,以「|」分隔(分類必須存在且繁簡體必須和站內一致)
  • :UNIXTIMESTAMP :用整數表示的時間,從1970年1月1日零時起到該時間的毫秒數
  • :USERNAME :用戶名(不帶User前綴)
  • :CAETGORY :一個分類(分類必須存在且繁簡體必須和站內一致)

數據的輸出格式為JSON和JSONP,RSS輸出還在開發中。

源代碼