사용자:TedBot/기술적 설명

아래는 기술적 설명이며, 필요 시 더 추가될 수 있습니다.

유지보수 틀 정리 편집

  • 문서 역사를 가져올 때 reverse 처리하여 최신판부터가 아닌, 가장 오래된 판부터 확인하도록 함
  • 첫 판부터 확인하되, 그 판의 마지막 날짜에 해당하는 판만을 검사
    • 날짜만 확인하면 되므로 모든 판을 일일이 검사할 필요 없음
  • 해당 판에 날짜 없는 유지보수 틀이 부착된 시점을 확인하여 날짜 추가

※ 판의 수가 많은 경우 시간이 오래 걸릴 수 있으므로 먼저 목록과 날짜 정보를 취득하고, 나중에 일괄 치환하도록 함.

예외 처리
  • 모든 판에서 확인이 되지 않는 경우나 기타 이유(숨겨진 판 등)가 있을 경우 치환하지 않음.
  • 예기치 않은 틀 스타일의 경우 치환하지 않음 (예: 알 수 없거나 한국어 위키백과에 사용되지 않는 변수를 틀에 사용)
  • 동일한 유지보수 틀이 여러 개 있는 경우 처리하지 않음. → 이 부분은 추후 보완 예정.

잘못된 미완성 목록/부분 토막글 틀 사용 정리 편집

  • 미완성 목록 틀이나 부분 토막글 틀이 위치한 문서의 최신판만을 검사 (미완성 목록→부분 토막글 순)
  • 관련 틀 바로 아래에 아무런 내용이 없고 그 바로 아래에 단락이 시작되면 빈 문단 틀로 치환
예외 처리
  • 마지막 문단에 미완성 목록/부분 토막글 틀이 놓여있는 경우, 일단 치환하지 않음 (false positive 방지)
    • 이에 대한 예외 처리를 아래와 같이 계획하고 있었으나, 둘러보기 틀이 해당 문단과 직접적으로 관련이 있을 수도 있고 없을 수도 있어 수작업으로 진행하기로 결정함.
계획이 취소된 예외 처리

사용자:콩가루님의 제안 (2015년 10월 31일)을 포함, 여러 예외 처리를 계획한 적이 있음.

  • 마지막 단락 이후부터는 해당 단락부터 문서 내용 끝까지 확인
    • 1) 마지막 단락의 내용 일부로 간주하지 않는 사항 (그 외에 더 있는지 조사 중)
      • 일반 분류, 토막글 틀, 기본정렬, 생몰년 틀, 주석 관련 문법/틀(references, reflist), 공용 분류 틀, 포털 틀, 둘러보기 틀, 분류:저작자표시 틀(글로벌세계대백과사전 틀 등)
    • 2) 그 이외에 /[A-Za-zㄱ-ㅎ가-힣]+/가 오면 내용이 있는 것으로 간주하여 무시하고 넘어감

틀 이름 및 스타일 정리 편집

처리 순서
  • 문서의 최신판만을 검사
    • 보통은 특정 틀의 transclusions 목록에 해당하는 문서들을 확인
    • 필요한 경우 목록에서 일부 항목을 제외하거나, 자체적으로 제목에 대한 금칙어 또는 필수 단어를 사용하여 필요한 문서들만 처리
처리 기능 (예시)
  • deprecated로 된 일부 틀의 이름을 변경 (예: 저명성→문서 등재 기준)
  • 영어로 된 틀의 이름을 한국어로 수정
  • 일부 영어로 된 스타일(DEFAULTSORT, Category:, stub, File: 등)의 정리
예외 처리 (예시)
    • {{로 시작되는 틀 이름 바로 다음에 |나 }}가 오면 수정
    • {{로 시작되는 틀 이름 바로 다음에 아무런 내용이 없을 경우 바로 아래줄 또는 그 다음 줄에 |가 오면 수정
    • 이외의 기타 상황도 존재하지만, 이 경우 봇에 의해 처리하지 않고 사용자가 직접 확인하여 수동 처리하도록 함.

큰 토막글 문서 정리 편집

  • 문서의 최신판만을 검사
  • 분류:큰 토막글 문서 참고하여 관련 문서가 존재하면 토막글 틀 일괄 제거
  • 9,000바이트 이상의 문서의 토막글 틀만 정리하도록 변경 (2015년 11월 8일 20시 KST)

전거 통제 틀 및 살아있는 사람 분류 추가 편집

  • 영어 위키백과의 전거 통제 및 살아있는 사람 분류를 확인하여 존재하면 한국어 위키백과에도 추가함.
예외 처리
  • 인터위키로 확인된 영어 위키백과의 문서가 넘겨주기 문서로 연결되었으면 치환하지 않음.

생몰년 틀 풀기 편집

  • 생몰년 틀이나 생애 틀을 사용 중인 문서 목록을 확인.
  • 문서에 추가되어 있는 생몰년/생애 틀을 분석하여 태어난 해, 죽은 해, 정렬 키의 사용 여부를 확인.
  • 생몰년/생애 틀에 사용 중인 항목과는 별도로, 문서 내에 추가된 분류와 기본정렬이 있는지 확인.
    • 틀의 분류/기본정렬과 문서 내의 분류/기본정렬이 중복되어 쓰이는 부분이 있으면 문서에 직접 추가된 해당 분류나 기본정렬을 삭제.
    • 중복되지 않는 경우 문서 내의 문서 내에 직접 추가된 분류나 기본정렬은 그대로 놓아둠.
  • 관련 틀을 분류가 시작되는 줄 바로 위에 위치시키고, 풀기와 subst=subst:를 추가하여 올바르게 풀도록 함.
예외 처리
  • 생몰년/생애 틀이 두 번 이상 반복되거나 틀을 찾지 못하면 처리하지 않고 넘어감. (수작업 필요)
  • 살아있는 사람 분류, 태어남/죽음 분류, 기본정렬 또한 2번 이상 중복해서 문서 안에 있으면 처리하지 않고 넘어감. (수작업 필요)
  • 여러 개의 분류가 한 줄에 오는 경우도 처리할 수 있도록 함.

토막글 정리 편집

여러 개의 토막글 틀을 하나로 합치기
  • 여러 개의 토막글 틀이 있으면 하나로 합치고, 기본정렬 또는 분류 바로 위로 토막글을 위치시킴.
예외 처리

아래의 예외 처리 중 일부는 백:토막글의 "문서당 최대 2개까지 토막글 변수를 사용할 수 있음"을 따름.

  • 토막글 틀이 하나만 있으면 넘어감. (토막글 틀 하나에 분류가 3개 이상 사용되는 경우 분류:토막글 틀에 과도한 변수를 사용한 문서 분류로 수동 추적)
  • 토막글 분류가 하나씩 있는 틀들이 3개 이상 있으면 토막글 분류를 2개까지만 합쳐서 사용.
  • 토막글 틀이 여러 개이고 토막글 분류도 여러 개인 경우 처음부터 온 토막글 분류 순서대로 2개까지만 사용.
  • 토막글 틀이 존재하지 않는 등 예상되지 않는 규칙이 있으면 처리하지 않고 넘어감. (수작업 필요)
토막글의 위치 수정

여러 문제 틀 병합 처리 편집

  • 틀 이름으로 특정 값을 받아 관련 틀을 가리키는 모든 문서를 검출.
  • 문서의 문제로 제기되는 틀이 둘 이상 존재하면 해당 틀 위아래로 여러 문제 틀을 삽입.
예외 처리
  • 관련 틀이 하나만 있으면 처리하지 않고 넘어감.
  • 오직 문서 상단에 위치한 틀만 처리.
  • 여러 틀이 한 줄에 오는 경우도 처리할 수 있게 함.
  • 틀 옆에 주석이 올 경우에도 처리할 수 있게 함.
  • 틀이 존재하지 않는 등 예상되지 않는 규칙이 있으면 처리하지 않고 넘어감. (수작업 필요)

둘러보기 틀의 hlist 정리 편집

문서 분류 추가 편집

  • {{분류 필요}} 틀을 가리키는 문서를 확인하여 모든 문서를 검출.
  • 다른 언어의 위키백과 참고하여 한국어 위키백과와 일치되는 분류가 있으면 분류 추가.
  • 분류 추가 후에는 분류 필요 틀 제거.

문단 이름 변경 편집

  • 특:검색을 사용하여 문단이 포함된 문서 검출.
  • 검출된 문서에 한하여 모든 문단을 원하는 이름으로 변경.

공통 사항 편집

  • 방대한 데이터 취득은 봇과 관련된 미디어위키 API가 처리하지 않고, 봇과 무관한 Mechanize 모듈에 의해 처리함.
    • oldid의 판 링크들은 봇 프로그램 측에 캐시가 있을 경우 서버로부터 로드하지 않고 캐시를 그대로 사용하도록 함 (oldid의 정보는 변경되지 않으므로 최신화 불필요. 서버 부하 방지 목적)
    • oldid가 아닌 링크들의 경우 옛날 정보를 사용하지 않도록 서버에서 최신화된 정보를 사용하도록 함.
  • 접근 실패 후 15회 반복 재시도 후 접근이 여전히 실패하면 die 처리(봇 가동 중단 조치, 서버 부하 방지 목적, 봇 정책과는 무관)
    • 봇 프로그램 측 네트워크의 문제이거나 관리자에 의해 차단된 경우 접근이 실패될 수 있음.
    • 반복 재시도는 1초마다 sleep 처리하여 동작.
  • maxlag parameter는 별도로 설정하지 않았으므로 기본값을 따르며 이는 pywikibot의 기본값과 동일하게 동작.
  • 분당 기여 횟수는 봇 정책에 따름.
    • 이전 기여 시간과 현재 기여의 시간차를 계산하여 sleep 처리하여 동작.
  • 인코딩 언어는 호환성을 이유로 cp949 사용.
  • 봇 프로그램은 사용자에 의해 수행되며 중간에 수행 변경 및 임의 중단 가능.