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