维基百科:维基百科工具/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输出还在开发中。

源代码