維基百科:機器人/申請/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)