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