此為機械人帳號,操作者為下一次登錄(討論),屬合規附屬帳戶,以半自動或全自動方式協助用戶處理繁瑣而重複的工作。此機械人並未獲得社群批准運作,或其操作許可已被撤銷,是故不應進行大規模操作,亦請勿在缺乏操作者監察下運作,操作者及機械人用戶空間除外。 管理員︰若然此機械人進行大規模操作或相信在缺乏監察下運作,而且所編輯區域並非操作者或機械人用戶名字空間,請施予封禁。 |
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,在類別循環(「美國電視劇」「美國影集」循環)時不能跳出。