User:Xcnbot
外观
![]() | 此為機械人帳號,操作者為下一次登录(討論),屬合規附屬帳戶,以半自動或全自動方式協助用戶處理繁瑣而重複的工作。此機械人並未獲得社群批准運作,或其操作許可已被撤銷,是故不應進行大規模操作,亦請勿在缺乏操作者監察下運作,操作者及机器人用戶空間除外。 管理員︰若然此機械人進行大規模操作或相信在缺乏監察下運作,而且所編輯區域並非操作者或機械人用戶名字空間,請施予封禁。 |
xcnbot(Xiayicidenglu Category Navigation roBOT)是一个添加和维护各类别分类树导航的机器人,由User:下一次登录操作,已于2007年5月6日被批准成为正式机器人。xcnbot分析维基百科的分类结构,并使用{{catnav}}模板在每一个类别顶端说明其母类别的分类树,例如对Category:亚洲国家,显示:
原理和程序
[编辑]分两步进行,首先是自上而下的添加,然后是自下而上的检查和删除。
自上而下
[编辑]从根目录:“页面分类”开始,广度优先的遍历所有子类别,使用递归方式处理每一个类别:
- 设定
- 类别树深度(“cDepth”)=5
- 修改计数器(“cChange”)=0
- 初始化:
- 当前类别名(“vCCName”)=“页面分类”或任一类别(对其子类别进行处理)
- 当前母类别阵列(“aCCTree[100]”)= NA
- 母类别树深度(“aCCDepth”)= 0
- 递归
- 输入:vCCName,aCCMother,aCCDepth
- 赋值:aCCTree[aCCDepth]=vCCName
- 检查是否有重复类别名,如果有,则报错停止。
- 所有子类别:
- 连接并提取编辑内容,检查是否有aCCTree[]的catnav导航,如果否:
- 加入catnav
- 修改计数器加1
- 连接并提取编辑内容,检查是否有aCCTree[]的catnav导航,如果否:
- 所有子类别:
- vCCName=子类别名,调用递归。
自下而上
[编辑]- 连结所有页面中的category空间页面: http://zh.wikipedia.org/w/index.php?title=Special%3AAllpages&from=&namespace=14
- 对每一个类别,统计{{catnav}}模板的个数
- 对于每一个{{catnav}}模板,从后到前检查是否正确
- 如果正确,检查下一个模板
- 如果错误,删除该模板
- 对于每一个{{catnav}}模板,从后到前检查是否正确
- 下一个类别,如果超过三个模板,则删除剩下的所有模板。
检查模板的细节:
- 从后到前读取{{catnav}}模板中的各类别名
- 检查当前类别是否被分类于上一级类别中,如果没有,则报错结束。如果有,则进入上一级类别,然后重复。
进度和问题
[编辑]- 目前已经完成1.1部分。
- 调试约500次编辑,尚未发现异常。11:13 2007年3月13日 (UTC)
- 完成第二部分,并调试成功。正式申请机器人。11:53 2007年3月31日 (UTC)
- 被批准。2007年5月6日 (日) 11:39 (UTC)
- 发现循环分类bug,修改完成。2007年5月7日 (一) 12:32 (UTC)
- 同一个类别使用catnav模板次数过多,已经有超过10个,影响美观和实用性,计划修改源代码。2007年5月14日 (一) 04:13 (UTC)
日志
[编辑]- 2007年5月7日 (一) 04:48 (UTC):运行第一部分。
- 2007年5月7日 (一) 11:58 (UTC)停止运行,发现一个bug,在类别循环(“美国电视剧”“美国影集”循环)时不能跳出。