维基百科:机器人/申请/Antigng-bot/30
Antigng-bot 30
编辑- 状态: 撤销许可
- 操作者: Antigng(留言)
- 提请时间: 2019年6月1日 (六) 20:56 (UTC)
- 自动化程度:全自动
- 编程语言:C
- 用途:清理引用模板中accessdate和archivedate的格式
- 源代码连结: User:Antigng-bot/date/User:Antigng-bot/regex等
- 编辑时段及频率:不限
- 受影响页面:
~103-1047115 - 遵守机器人规范:不相关,只影响主名字空间
- 已有机器人权限:是
- 由三部分组成:
- 第一部分将条目中的模板及嵌套关系提取出来。为正确地判断“|”、“=”等符号的含义,在解析模板的过程中还会检查内链、注释和部分会导致维基语法失效的标签(如nowiki、math、pre等)的状态。此外,如果在提取过程中发现子模板已经损坏或者这个程序处理不了,则会将其所有的母模板标记为损坏。条目中有任何一个模板损坏,或者正文结束时内链、注释、标签的状态不正常,则不会转入第二部分。(经测试,主名字空间中有0.2%的页面会遇到此问题,其中绝大多数是由语法错误造成的,例如此页面)关于提取模板的功能的测试参见1、2。
- 第二部分调用tempgroom函数(源码已附)“梳理”前一部分获得的每一组模板。首先利用递归遍历每一个模板。然后依次检查:如果模板已损坏,不处理;不是引用模板,不处理;没有模板参数,不处理。然后检查有无待处理的“accessdate”和“archivedate”参数(满足:1、(除去空格、常见控制符和注释之后的)参数名相符;2、有参数值;3、该参数处没有引出子模板)。如果模板中有且仅有一个满足条件的“accessdate”参数,则检查(除去空格、常见控制符和注释之后的)参数值是否符合“xxxx-xx-xx”的格式。如果不符,利用Wikipedia:机器人/申请/Antigng-bot/11中的函数(在此基础上增加了对中文月份的支持)提取“年、月、日”。如果:
- 负责转换的函数没有报错
- 得到了大于2000的年份
- 没在参数中发现诸如“xx期”的字样
- 如果有月份,则月份数在1-12之间
- 如果有日数,日数在1-31之间,且有月份。
- 则用规范的年月日格式代替老格式。对“archivedate”参数采取类似的方法处理。如果模板被梳理,或任何一个子模板被梳理过,则返回1,否则返回0。
- 第三部分将模板放回页面的源代码中,如果1、第一部分没有发现任何错误;2、第二部分至少有一个模板梳理过,则提交编辑。
- 有且仅有第二部分中“提取年月日”的部分可能出错,因为所涉对象是自然语言,不可能穷尽所有可能性。但从测试结果来看似乎并发现没有问题。
- 这个任务的最终目标是完全取代Wikipedia:机器人/申请/Liangent-bot/16。本申请仅涉及“accessdate”和“archivedate”,原因在于“date”、“month”、“year”等参数之间存在复杂的相互作用,极端一点,如果清出“第X期”来了还得查“issue”参数。这些问题留待将来解决。--Antigng(留言) 2019年6月1日 (六) 20:56 (UTC)
Old discussions...
- 如可行,请顺便处理access-date、archive-date和同时使用两个的情况。--Zest 2019年6月2日 (日) 02:06 (UTC)
- 刚看了一下Module:Citation/CS1/Date_validation,如果accessdate、archivedate只填年或年月还是会报错。因此上边的逻辑修改为:
- 负责转换的函数没有报错
- 没在参数中发现诸如“xx期”的字样
- 得到了大于2000的年份,在1-12之间的月份和在1-31之间的日数
--Antigng(留言) 2019年6月2日 (日) 03:07 (UTC)
- 正规化日期格式似乎没有共识?--Xiplus#Talk 2019年7月4日 (四) 13:14 (UTC)
- 那个讨论串里也只是有人想用xxxx年x月x日这种格式,排除掉就好了。--Antigng(留言) 2019年7月4日 (四) 16:27 (UTC)
- 这个工作是修复出错的参数,还是会全面正规化参数?--Xiplus#Talk 2019年7月7日 (日) 04:37 (UTC)
- 那个讨论串里也只是有人想用xxxx年x月x日这种格式,排除掉就好了。--Antigng(留言) 2019年7月4日 (四) 16:27 (UTC)
- 请求已过期,如仍欲执行此任务请随时重开。--Jimmy Xu 论 2019年12月13日 (五) 22:51 (UTC)
- 重开。现在它依靠从Module:Citation/CS1/Date validation里原封不动扒出来的正则自动生成的DFA判断日期参数是否合法,只有在参数非法的情况下(即理论上会让CS1模块报错)才会启动后续导致清理参数的逻辑。如果没有bug,这应该很好地解决了正规化日期格式无共识的问题,它现在不做没有必要的正规化。--Antigng(留言) 2020年7月20日 (一) 04:01 (UTC)
- 空运行报告:在整个主名字空间发现7115个可编辑页面,其中仅14个不在分类Category:引文格式1错误:日期之中,逐一检查发现要么是ref标签参数重复导致模板没加载,要么是母模板参数填错导致模板未显示,总之不是bot本身的问题。这也证明了修改以后正规化日期的行为已无法重现。--Antigng(留言) 2020年7月20日 (一) 04:01 (UTC)
- 批准测试运作(50次编辑)。--Xiplus#Talk 2020年10月26日 (一) 01:27 (UTC)
- 完成无误--Antigng(留言) 2020年10月30日 (五) 11:51 (UTC)
- 正式批准运作。--Xiplus#Talk 2020年11月2日 (一) 23:46 (UTC)
- 完成无误--Antigng(留言) 2020年10月30日 (五) 11:51 (UTC)