维基百科:机器人/申请/Antigng-bot/31

维基百科,自由的百科全书

Antigng-bot 31

  • 狀態 已批准
  • 操作者: Antigng留言
  • 提請時間: 2019年6月3日 (一) 01:27 (UTC)
  • 自動化程度:自动
  • 程式語言C
  • 用途:清理引用模板中内链与外链的冲突
  • 原始碼連結:
  • 編輯時段及頻率:不限
  • 受影響頁面:先清存档,后转入定期运行
  • 遵守機器人規範不相关,不涉及用户页
  • 已有機器人權限:
  • 框架与Wikipedia:机器人/申请/Antigng-bot/30相同,仍然是三部分。第一、第三部分与前一申请完全相同,第二部分的逻辑更改为:
    • 调用tempgroom函数清理所获每一组模板。先利用递归遍历每一个模板,然后检查模板,如果模板损坏,不处理;模板不是引用模板,不处理。接着对模板参数进行检查,如果模板:
        1. 存在至少一个有效(参数值处引出子模板,或未引出子模板,但是存在非注释,空格和常见控制符的其它字符)的
        2. a、url参数,或
        3. b、pmc参数且此时的引用模板为{{cite journal}}(在url参数为空的情况下会自动生成链接)。且,
        4. 有且仅有一个有参数值的title参数(此处不检查其是否有效)。且,
        5. title参数的参数值处没有引出子模板(记作情况1)。或,
        6. title参数的参数值处仅引出了一个子模板,且模板中没有script-title参数(为最小化风险,此处甚至不检查其参数值是否为空)(记作情况2)。
    • 对于情况1,检查title参数的参数值是否存在内链。对于每个内链,如果没有管道链接,则直接去除方括号,检查方括号包裹的内容是否存在维基名字空间的前缀或者跨语言链接,如果存在,则直接丢弃这一部分内容(读者不应该看到指向非主名字空间的链接);如不然,除去该内容开头可能存在的冒号,再把它放回原来的参数中。如果有管道链接,则对显示的内容作上述处理。
    • 对于情况2,检查title参数值中子模板前后的内容是否无效(仅存在注释,空格和常见控制符),如否,不处理。之后检查子模板的名称,若其为lang,记作情况2a;若其为lang-xx,记作情况2b。
      • 对于情况2a,检查其是否仅存在符合lang模板规范的2个参数,如果是,将子模板整个替换为“参数1:参数2”,释放子模板,并将title改为script-title。否则不处理。
      • 对于情况2b,检查其是否仅存在符合lang-xx模板要求的1个参数,如果是,将子模板整个替换为“xx:参数1”,释放子模板,并将title改为script-title。否则不处理。
    • 如果情况1和情况2都不符合,不处理。
  • 如果模板被处理,或其有任意一个子模板被处理,返回1,否则返回0。
  • 这个任务完全涵盖了Wikipedia:机器人/申请/Liangent-bot/18(仅处理情况2a)。测试编辑。其中仅此编辑有问题,相关问题已修正。其余编辑均无问题。--Antigng留言2019年6月3日 (一) 01:27 (UTC)[回复]
  • 在整个主名字空间跑了一下空运行。一共发现421个可以编辑的页面,其中Special:Diff/54666335这15个页面并不在Category:引文格式1错误:网址-维基内链冲突之中。绝大多数的假阳性都是由于{{cite interview}}没有使用cs1而导致的。--Antigng留言2019年6月3日 (一) 04:56 (UTC)[回复]
  • 批准測試運作條目內30編輯。--Xiplus#Talk 2019年7月4日 (四) 13:17 (UTC)[回复]
  • 完成。最前边6个错误估计是不小心动了公共库里的什么东西,导致提交的请求没有正确地百分号编码所致,回退到旧版本以后问题就解决了,修正后所有编辑均符合设计要求。--Antigng留言2019年7月4日 (四) 15:43 (UTC)[回复]
  •  正式批准運作。--Xiplus#Talk 2019年7月8日 (一) 00:11 (UTC)[回复]