사용자:WonRyong/replace.py
이 문서는 다른 언어판의 문서([[:m:replace.py|m:replace.py]])를 번역 중입니다. 번역되지 않은 부분은 번역을 마치거나 삭제해 주세요. |
Replace.py은 Pywikipedia bot 프로그램을 사용하는 봇이다.
이 봇은 원하는 텍스트를 찾아서 원하는 텍스트로 자동교환을 한다.
옵션
[편집]다음과 같은 옵션(파라메타)을 사용할 수 있다:
- -xml
- 지역서버의 XML dump 파일에서 원하는 작업을 한다.(현재 페이지들의 XML dump 파일은 [1]에 있다.) 이렇게 사용하면 된다: -xml:덤프 파일명 아래 예제 1번 참조.
- -file
- 사용자 PC에 있는 외부 텍스트 파일에 있는 모든 페이지들에서 작업을 한다. Will read any [[wiki link]] and use these articles. 이렇게 사용하면 된다: -file:외부 파일명 아래 예제 5번 참조.
- -cat
- 지정한 카테고리(분류)에 있는 모든 문서를 처리한다. 이렇게 사용하면 된다: -cat:분류의 이름
- -page
- 지정한 단 한 개의 페이지만 작업한다. 이렇게 사용하면 된다: -page:pagename 여러 페이지들을 처리하려면 이 명령어를 여러번 입력하면 된다.
- -ref
- 지정해 준 문서를 가리키는 모든 문서들을 작업한다. 이렇게 사용하면 된다: -ref:문서 이름
- -start
- 지정한 문서부터 시작해서, 모든 문서를 처리한다. -start:!라고 입력하면, 모든 문서를 처리한다. 주의: 이 옵션 보다는 -xml 옵션의 사용을 권장한다; this is meant for cases where there is no recent XML dump.
- -regex
- regular expressions 을 사용하여 교환작업을 한다. 만약 이 옵션이 부여되지 않으면, 봇은 단순한 텍스트 교환 작업만 할 것이다.
- -except:XYZ
- XYZ를 포함한 문서는 생략한다. -regex 옵션이 같이 사용되었다면, XYZ는 regular expression으로 간주될 것이다.
- -fix:XYZ
- Perform one of the predefined replacements tasks, which are given in the dictionary 'fixes' defined inside this file. The -regex argument and given replacements will be ignored if you use -fix.
- 현재 사용 가능한 옵션은 다음과 같다:
- -fix:HTML: "HTML 태그"를 "위키 문법"으로 고친다. 아래 예제 3번 참조.
- -namespace:n
- Number of namespace to process.
- -always
- 매 번 고칠 때 마다 사용자에게 묻지 않고, 아무 질문없이 전부 다 고쳐버린다.
- 기타 argument
- 첫 argument는 옛 문장이고, 두번째 argument는 새 문장이다. -regex 옵션이 사용되었다면, 첫 argument는 regular expression으로 여겨질 것이다. 그리고 두번째 argument는 \\1 이나 \g 을 포함해야 할 것이다. 아래 예제 5번 참조.
주의사항: -xml
, -file
, -page
는 각각 따로 사용해야 하며, 함께 섞어서 사용하지 말 것.
예제
[편집]1. 만약 옛날의 문장에서 틀로 변경하고 싶다면, 예컨대, {{msg:Stub}}를 새로운 문장으로 바꾸고 싶다면, 예컨대 {{Stub}}로 바꾸고 싶다면, 영어판 등은 http://download.wikimedia.org 에서, 한국어 일본어 말레이시아어 태국어 판은 http://download-yaseo.wikimedia.org/ 에서 XML dum file(현재버전)을 다운로드 해서, 다음의 명령어를 입력하라:
python replace.py -xml -regex "{{msg:(.*?)}}" "{{\1}}"
2. 만약 foobar.xml라는 이름의 덤프 파일을 받았다면, 그리고 Errror -> Error로 텍스트를 자동수정하고 싶다면, 다음과 같이 입력하면 된다:
python replace.py -xml:foobar.xml "Errror" "Error"
3. 만약 "John Doe" 라는 페이지에서 "HTML 태그"를 "위키 문법"으로 바꾸고 싶다면, 다음과 같이 하면 된다:
python replace.py -page:John_Doe -fix:HTML
4. 만약 특별한 옵션 부여 없이, 여러번의 문구교환을 하려면, 다음과 같이 하면 된다:
python replace.py -file:blah.txt
봇은 문서를 수정하기 전에 사용자에게 물어 올 것이다. 이것은 이중 체크를 할 수 있기에 권장된다.
5. articles_list.txt 라는 외부 파일에다가, 사용자는 다음과 같이 위키백과 페이지 목록을 적어서 저장할 수 있다. 물론 파일명은 다른 이름이어도 된다:
[[plane]] [[vehicle]] [[train]] [[car]]
articles_list.txt이란 이름으로 저장한다. 그리고 봇 명령을 다음과 같이 입력한다:
python replace.py -file:articles_list.txt "errror" "error"
그러면, 봇은 plane, vehicle, train, car의 문서에서 "errror"라는 문장을 "error"로 고칠 것이다.
나의 사용법을 실례로 설명
[편집]- C:\pwikipedia\re1.txt 파일에 다음을 저장한다. 윈도우즈의 기본 메모장을 사용하되, UTF-8 형식으로 저장해 줘야 한다.
[[:분류:대한민국 민법]] [[:분류:대한민국 상법]] [[:분류:대한민국의 법률]] [[:분류:대한민국의 시행령]] [[대한민국 법률]] [[각종기념일등에관한규정]] [[교육기본법 2005]] [[교육기본법 2007]] [[대한민국 민법]] [[대한민국 상법]] [[대한민국 연안관리법]] [[이명박 특검법]] [[대한민국 정부조직법 ]] [[대한민국 민법]] [[대한민국 상법]] [[대한민국 연안관리법]] [[이명박 특검법]] [[대한민국 정부조직법]] [[대한민국 헌법]] [[대한민국 형법]] [[대한민국 형법/5454]]</nowiki>
- 다음을 실행한다:
C:\pwikipedia>replace.py -family:wikisource -lang:ko -file:re1.txt "분류:대한민국의 법령" "분류:대한민국의 법"
연습하기
[편집]- Wikisource:Sandbox 여기가 연습장입니다. 여기에 원하는 샘플 문장을 좀 복사 붙여넣기 합니다.
- 다음을 실행합니다.
replace.py -family:wikisource -lang:ko -page:Wikisource:Sandbox "홍길동" "아무개"
- 그러면, Wikisource:Sandbox 문서 내용 중에서 홍길동 부분이 아무개로 바뀝니다.
- 연습장이기 때문에, 실수해도 어떤 문제도 생기지 않습니다. ^^ -- WonRyong (토론) 2008년 5월 15일 (목) 23:33 (UTC)
정규식 사용하기
[편집]- 정규식이라는 엄청난 기능이 있습니다.
- Wikisource:Sandbox 여기가 연습장입니다. 여기에 다음을 복사, 붙여넣기 합니다:
{{msg:홍길동}} - {{msg:홍길동}} {{홍동}},{{msg홍길동}} {{sg:길동}} {{msg:홍길동}}
- 다음을 실행합니다:
replace.py -family:wikisource -lang:ko -page:Wikisource:Sandbox -regex "{{msg:(.*?)}}" "{{\1}}"
- 그러면 Wikisource:Sandbox 문서 안에 있던 {{msg:홍길동}} 이 {{홍길동}}으로 바뀝니다.
- 직접 해보세요. w:정규식은 엄청나게 치환기능을 강력하게 만들어 줍니다. ^^ -- WonRyong (토론) 2008년 5월 15일 (목) 23:41 (UTC)
정규식 예제 추가
[편집]- Replace.py는 문서에 텍스트를 추가하거나 덧붙이는 용도로 사용 가능하다(단, 변환된 텍스트는 새로 끼워 넣어진 새로운 줄에 있다)--221.144.238.115 (토론) 2011년 4월 17일 (일) 13:18 (KST)
python replace.py -regex '(?ms)^(.*)$' "\1 > [[Category:NewCat]]"
vi 에디터 사용하세요
[편집]- 사용자:WonRyong/빔 사용법 여기에 빔(w:vim) 사용법을 자세하게 모으고 있습니다. 강력한 치환기능을 갖는 빔의 사용 숙지는, replace 봇의 사용에 많은 도움을 줄 것입니다. 둘 다 w:정규식을 사용하거든요. ^^ -- WonRyong (토론) 2008년 5월 16일 (금) 00:06 (UTC)
김소월 분류 추가
[편집][[글쓴이:김소월|김소월]]
- 그리고 다음의 명령어를 실행시켰습니다:
replace.py -family:wikisource -lang:ko -page:Wikisource:Sandbox "김소월" "분류:김소월\n김소월"
- 성공!! ^^
- 이제, 김소월에서 모든 문서목록을 C:\pywikipedia\re1.txt에 저장했습니다. UTF-8 형식
[[가는 길]] [[가는 봄 삼월]] [[가을 저녁에]] ...
- 그리고 다음의 명령어를 실행시켰습니다:
replace.py -family:wikisource -lang:ko -file:re1.txt "김소월" "분류:김소월\n김소월"
향가 분류 추가
[편집]replace.py -family:wikisource -lang:ko -file:re1.txt "[[:분류:향가]]" "{{PD-Old}}\n[[:분류:향가]]"
향가들에 라이센스 틀을 붙였습니다. -- WonRyong (토론) 2008년 5월 16일 (금) 15:40 (UTC)
분류:김소월 붙이기
[편집]빔 편집하기
[편집]김소월 문서를 복사해서 빔 편집기에 붙입니다. http://www.vim.org/
# [[아무개]] # [[홍길동]]
이런 식으로 되어 있습니다.
빔에서 : (콜론)을 누른 다음, 다음의 명령을 실행합니다.
:%s/^# //g
주의사항으로는, ::(콜론 두 번)이 되지 않게 하세요.
::%s/^# //g -> 에러남
:%s/^# //g -> 정상 작동함 ::(콜론 두 번)이 아니라 :(콜론 한 번) 입니다. ^^ 너무 친절한 설명!! ^^
그럼 이제
[[아무개]] [[홍길동]]
이렇게 됩니다. 빔 편집기에서 전체 복사를 해서, 윈도우즈 메모장에 붙여넣습니다. 윈도우즈 메모장에서 C:\pywikipedia\re1.txt 파일에 UTF-8 형식으로 저장을 합니다.
치환봇 돌리기
[편집]User:Wybot으로 아래 명령어를 실행하였습니다:
replace.py -family:wikisource -lang:ko -file:re1.txt "[[글쓴이:김소월|김소월]]" "[[:분류:김소월]]\n[[글쓴이:김소월|김소월]]"
김소월의 시에 분류:김소월을 붙였습니다.
향가에 라이센스 틀 붙이기
[편집]카테고리봇 돌리기
[편집]category.py listify -family:wikisource -lang:ko -recurse -overwrite
- 아래와 같은 메시지가 나오면, "분류:향가"의 경우, 분류:를 빼고 향가만 입력합니다.
Please enter the name of the category to listify: 향가
- 결과를 어디에 저장할 지를 묻습니다. User:WonRyong/category로 설정해 주었습니다.
Please enter the name of the list to create: User:WonRyong/category
- 그럼, 그 User:WonRyong/category 페이지에 분류:향가와 그 하위 분류의 모든 문서의 목록이 업로드됩니다.
빔 편집하기
[편집]User:WonRyong/category 페이지에 모든 문서의 목록을 빔 편집기에 붙여넣고 다음을 실행합니다.
:%s/^*//g
그러면, User:WonRyong/category의 매 줄마다 맨 앞에 붙어있는 *가 모두 삭제됩니다.
그 결과를 전체 복사해서, C\pywikipedia\re1.txt 파일을 열어서 ctrl+s로 저장합니다.
이전에 UTF-8로 C\pywikipedia\re1.txt 파일을 생성해 놓았기 때문에, 다시 UTF-8로 설정할 필요없이, ctrl+s 한방이면 간단히 끝납니다.
치환봇 돌리기
[편집]replace.py -family:wikisource -lang:ko -file:re1.txt "[[:분류:향가]]" "{{PD-Old}}\n[[:분류:향가]]"
향가들에 라이센스 틀을 붙였습니다. \n은 엔터키를 치라는 의미입니다.-- WonRyong (토론) 2008년 5월 16일 (금) 15:40 (UTC)
봇 도움말 목록
[편집]- User:WonRyong/Bot Howto - 총체적인 봇 노하우를 공유하는 문서
- User:WonRyong/login.py - 최초에 로그인 할 때 딱 한번만 실행
- User:WonRyong/interwiki.py - 봇의 대표인 인터위키봇에 대한 설명
- User:WonRyong/replace.py - 종종 쓰는 치환봇
- User:WonRyong/category.py - 하위분류의 문서까지 모두 목록으로 출력하는 봇
- User:WonRyong/speedy_delete.py - 빠른 삭제를 자동으로 처리하는 봇이다. 관리자 계정 필요
- User:WonRyong/unusedfiles.py - 전혀 안 쓰이는 그림, 동영상 기타 파일들의 설명란과 올린 사용자의 토론란에 자동으로 어떤 메시지를 보내는 봇이다.
- User:WonRyong/welcome.py - 신규 사용자 페이지에 틀:환영를 자동으로 붙여주는 봇
- User:WonRyong/upload.py
- python upload.py -lang:commons -wiki:en Image.png
- enwiki의 그림인 Image.png를 commons에 올림.
- User:WonRyong/check_extern.py
- User:WonRyong/redirect.py
- User:WonRyong/solve_disambiguation.py
- User:WonRyong/table2wiki.py
- User:WonRyong/brackethttp.py
- User:WonRyong/catall.py
- User:WonRyong/copy_table.py
- User:WonRyong/editarticle.py
- User:WonRyong/find.py
- User:WonRyong/getimages.py
- User:WonRyong/imageharvest.py
- User:WonRyong/imagetransfer.py
- User:WonRyong/pagelist.py
- User:WonRyong/saveHTML.py
- User:WonRyong/standardize_interwiki.py
- User:WonRyong/standardize_notes.py
- User:WonRyong/touch.py
- User:WonRyong/us-states.py
- User:WonRyong/warnfile.py
- User:WonRyong/extract_names.py
- User:WonRyong/extract_wikilinks.py
- User:WonRyong/splitwarning.py
- User:WonRyong/sqldump.py
- User:WonRyong/template.py
- User:WonRyong/test.py
- User:WonRyong/xmltest.py