Pywikibot: 두 판 사이의 차이

잔글 (추적용 분류 강제 갱신 겸 이름 변경 반영)
(내용 전반적으로 수정)
11번째 줄: 11번째 줄:
|종류    =  
|종류    =  
|출시    = 2002년
|출시    = 2002년
|최신버전 = 2.0rc5
|최신출시 =
|미리보기 =
|미리출시 =
|상태    =  
|상태    =  
|언어    =  
|언어    = 영어<ref>프로그램 특성상 UTF-8 기반 언어면 위키 편집이 가능하므로 한국어 위키 편집에도 별다른 제약사항이 존재하지 않는다.</ref>
|운영체제 =  
|운영체제 =  
|플랫폼  = [[파이썬]], 2.7 버전 혹은 3.3 이상 버전.<ref>2.7버전은 추후 지원 중단할 예정</ref>
|플랫폼  = [[파이썬]], 3.6 이상 버전.<ref>최신 버전인 8.x 버전 기준.</ref>
|엔진    =
|작성언어 = [[파이썬]]
|작성언어 = [[파이썬]]
|라이선스 = 비자유(Copyrighted)<ref>일부 코드는 공개 소스를 기반으로 사용하여 공개 라이선스이다. [[mw:Pywikibot/Overview]] 참조.</ref>
|라이선스 = 비자유(Copyrighted)<ref>일부 코드는 공개 소스를 기반으로 사용하여 공개 라이선스이다. [[mw:Pywikibot/Overview]] 참조.</ref>
|이전    =
|웹사이트 = https://www.mediawiki.org/wiki/Manual:Pywikibot
|이후    =
|웹사이트 =  
|비고    =  
|비고    =  
}}
}}
'''Pywikibot'''(파이위키봇)은 [[미디어위키]] 기반의 위키에서 [[파이썬]](Python) 스크립트를 돌려서 위키 편집을 용이하게 하는 도구이다. [[위키미디어]] 재단에서 공식적으로 봇을 만드는 데 사용하는 도구이며, 이를 이용해서 위키 봇을 만드는 데에도 유용하게 이용할 수 있다. [[미디어위키]] 홈페이지에 사용법이 자세하게 나와 있으며, 파이썬에 대한 지식이 부족해도 설치만 하면 내장된 스크립트를 통해서 위키를 쉽게 편집할 수 있게 도와준다.
'''Pywikibot'''(파이위키봇)은 [[미디어위키]] 기반의 위키에서 [[파이썬]](Python) 스크립트를 돌려서 위키 편집을 용이하게 하는 도구이다. [[위키미디어]] 재단에서 공식적으로 봇을 만드는 데 사용하는 도구이며, 이를 이용해서 위키 봇을 만드는 데에도 유용하게 이용할 수 있다. [[미디어위키]] 홈페이지에 사용법이 자세하게 나와 있으며, 파이썬에 대한 지식이 부족해도 설치만 하면 내장된 스크립트를 통해서 위키를 쉽게 편집할 수 있게 도와준다.
2023년 기준으로 최신 버전은 8.1이다.


== 설치방법 ==
== 설치방법 ==
37번째 줄: 32번째 줄:
> python pwb.py login
> python pwb.py login
</syntaxhighlight>
</syntaxhighlight>
user-config.py를 지정하지 않았다면 user-config.py를 지정하라는 메시지가 자동으로 띄운다. 안내창대로 입력하면 된다. 그러나 기본적으로 설정된 위키 이외의 위키에서 사용하려면 이 방법으로는 사용이 안 된다. 따라서 아래에 서드파티 위키에서 사용하는 방법을 안내할 것이다.


== 사용방법 ==
== 사용방법 ==
47번째 줄: 40번째 줄:
각 기본 스크립트의 설명에 대해서는 [[mw:Manual:Pywikibot/Scripts]]를 참조하자. 참고로 각 스크립트들은 script 폴더에 내장되어 있다. 파이썬에 대한 지식이 부족해도 봇을 쉽게 다룰 수 있다.
각 기본 스크립트의 설명에 대해서는 [[mw:Manual:Pywikibot/Scripts]]를 참조하자. 참고로 각 스크립트들은 script 폴더에 내장되어 있다. 파이썬에 대한 지식이 부족해도 봇을 쉽게 다룰 수 있다.


=== 관리자 권한으로 로그인하기 ===
== 로그인 방법 ==
user-config.py를 지정하지 않았다면 user-config.py를 지정하라는 메시지가 자동으로 띄운다. 안내창 대로 입력하면 된다. 그러나 기본적으로 설정된 위키 이외의 위키에서 사용하려면 이 방법으로는 사용이 안 된다. 따라서 아래에 서드파티 위키에서 사용하는 방법을 안내할 것이다.
 
=== user-config.py 작성방법 ===
그냥 스크립트 창에 <code>python pwb.py login</code>라고 입력해도 user-config를 스크립트가 알아서 지정해주지만 사전에 파일을 작성하면 도움이 된다.
 
<syntaxhighlight lang="python">
mylang = '언어 코드' # 한국어면 'ko', 영어면 'en'으로 입력
family = '패밀리 이름' # 사이트의 패밀리 이름. 예를 들면 위키백과는 'wikipedia'라고 입력하면 된다.
usernames['패밀리 이름']'언어코드'] = '사용자 계정명'
# password_file = 'user-password.py' # 비밀번호를 저장한 파일명
</syntaxhighlight>
 
참고로 usernames는 딕셔너리 형태이기에 사이트를 여러 개 이용할 경우 아래처럼 여러 개 입력할 수도 있다.
<syntaxhighlight lang="python">
usernames['libre']['ko'] = 'utolee90'
usernames['wikipedia']['ko'] = 'Letter Light'
...
</syntaxhighlight>
 
아래와 같이 -all 옵션을 붙이면 이 등록한 사이트를 전부 로그인할 수도 있다.
<syntaxhighlight lang="Powershell">
> python pwb.py login -all
</syntaxhighlight>
 
또한 password_file 경로를 지정하면 로그인할 때 비밀번호를 직접 입력하지 않고도 로그인이 가능해진다. 참고로 보통 파일명은 user-password.py 형태로 지정한다. 비밀번호 정보는 user-password.py에 아래와 같은 파이썬 튜플 형식 중 하나를 이용해서 지정하면 되며, 사이트 하나 정보는 튜플 하나에 대응한다.
<syntaxhighlight lang="python">
('계정명', '비밀번호') # 사이트가 하나만 있을 때. 이 경우 myfamily, lang은 user-config.py에 지정한 형식대로 출력한다.
('사이트명', '계정명', '비밀번호') # 사이트가 여러 개 있을 때에는 사이트명을 튜플에 명시해야 한다.
('언어코드', '사이트명', '계정명', '비밀번호') # 언어코드도 명시할 필요가 있으면 맨 앞에 명시
</syntaxhighlight>
 
[[특수:봇비밀번호]]를 이용해 봇 비밀번호를 지정했을 때에는 비밀번호를 입력하는 문자열 대신 <code>BotPassword('봇계정명', '봇비밀번호')</code>를 입력하면 된다. 봇비밀번호 생성 기능을 이용해서 봇을 만들 때는 아래 "새로운 봇 비밀번호 만들기"를 누른 뒤 봇 계정을을 지정한 후 봇의 권한을 설정하면 위키 엔진이 자동으로 봇 비밀번호를 지정한다. 이 봇 계정명의 형식은 "계정이름@봇이름" 형식으로 지정되며, 비밀번호는 봇 비밀번호를 생성할 때 제공하는 번호를 복사한 뒤 붙여넣으면 된다. 참고로 이 비밀번호를 분실할 경우 찾을 수 있는 방법이 없기에 봇을 삭제해야 한다. 봇 비밀번호를 설정하면 그냥 비밀번호를 입력할 때에 뜰 수 있는 경고 메시지가 나타나지 않거나 로그인 속도가 빨라지는 이점이 존재한다.
 
<syntaxhighlight lang="python">
('계정명', BotPassword('봇계정명', '봇비밀번호')) # 사이트가 하나만 있을 때. 이 경우 myfamily, lang은 user-config.py에 지정한 형식대로 출력한다.
('사이트명', '계정명', BotPassword('봇계정명', '봇비밀번호')) # 사이트가 여러 개 있을 때에는 사이트명을 튜플에 명시해야 한다.
('언어코드', '사이트명', '계정명', BotPassword('봇계정명', '봇비밀번호')) # 언어코드도 명시할 필요가 있으면 맨 앞에 명시
</syntaxhighlight>
 
=== 이전 버전에서 관리자 권한으로 로그인하기 ===
2018년 이전 Pywikibot 버전에서는 [[mw:Manual:Pywikibot/delete.py|delete.py]] 같이 관리자 권한이 필요한 스크립트를 처리할 때에는 관리자 계정 로그인을 지정해야 했다. 이를 위해 user-config.py 파일을 아래와 같이 usernames 부분 아래에 sysopnames 부분도 같이 설정하는 것이다.
2018년 이전 Pywikibot 버전에서는 [[mw:Manual:Pywikibot/delete.py|delete.py]] 같이 관리자 권한이 필요한 스크립트를 처리할 때에는 관리자 계정 로그인을 지정해야 했다. 이를 위해 user-config.py 파일을 아래와 같이 usernames 부분 아래에 sysopnames 부분도 같이 설정하는 것이다.
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
54번째 줄: 87번째 줄:
usernames['(패밀리명)']['ko'] ='(사용자 계정명)'
usernames['(패밀리명)']['ko'] ='(사용자 계정명)'
sysopnames['(패밀리명)']['ko'] ='(상위권한 사용자 계정명)'
sysopnames['(패밀리명)']['ko'] ='(상위권한 사용자 계정명)'
password_file = '(패스워드를 저장한 파이썬 파일명)'
password_file = '(패스워드를 저장한 파이썬 파일명)'
</syntaxhighlight>
</syntaxhighlight>


65번째 줄: 98번째 줄:
2020년 이후 버전 기준으로는 sysopnames 딕셔너리를 아예 사용하지 않고 봇을 연결한 주 계정에 관리자 권한이 있는지 여부를 인식한다. 즉 delete.py 같이 사용 시에 관리자 권한을 요구하는 스크립트도 다른 스크립트와 동일한 방법으로 사용할 수 있다.
2020년 이후 버전 기준으로는 sysopnames 딕셔너리를 아예 사용하지 않고 봇을 연결한 주 계정에 관리자 권한이 있는지 여부를 인식한다. 즉 delete.py 같이 사용 시에 관리자 권한을 요구하는 스크립트도 다른 스크립트와 동일한 방법으로 사용할 수 있다.


== 리브레 위키에서 사용하는 방법 ==
== 서드파티 위키에서 사용하는 방법 ==
우선 pywikibot을 설치한 디렉토리에서 pywikibot/families 디렉토리를 연다. 그 다음에 아래와 같이 패밀리명과 언어명, url 등을 입력해야 한다. 여기서 파일명을 반드시 libre_family.py로 지정해야 한다.
[[리브레 위키]] 같은 서드파티 위키의 정보는 pywikibot을 처음 설치할 때에는 제공되지 않기에 사용자가 정보를 등록해야 한다. pywikibot을 설치한 디렉토리에서 pywikibot/families 디렉토리를 연다. 그 다음에 아래와 같이 패밀리명과 언어명, url 등을 입력해야 한다. 리브레 위키의 패밀리명은 편의상 'libre'로 지정한다. 이 때 예상치 못한 동작 오류를 방지하기 위해 패밀리명을 'libre'라고 지정할 경우 파일명도 'libre_family.py'로 통일하는 것이 필요하다.


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
90번째 줄: 123번째 줄:
family = 'libre'
family = 'libre'
mylang = 'ko'
mylang = 'ko'
usernames['libre']['ko']=u'(사용자명)'
usernames['libre']['ko']='(사용자명)'
</syntaxhighlight>
</syntaxhighlight>


99번째 줄: 132번째 줄:
</syntaxhighlight>
</syntaxhighlight>


다만 얘기치 못한 편집 제한상황에 대처하기 위해 비밀번호를 설정할 것을 권장한다. 봇 비밀번호를 만들면 API를 이용해서 접근하기에 비번을 입력하지 않아도 접근할 수 있다. 우선 Pywikibot으로 봇을 사용할 계정으로 로그인 한 뒤 [[특수:봇비밀번호]] 문서를 열고 봇 이름을 지정한다. 그러면 이 특수문서가 그 봇에 대해 비밀번호를 생성한다. 그 다음 user-config.py에 아래와 같이 설정한다.
위의 비밀번호 생성하는 방식은 리브레 위키 같은 서드파티 위키에서도 같은 방식으로 적용하면 된다.
 
<syntaxhighlight lang="python">
mylang = 'ko'
family = 'libre'
usernames['libre']['ko'] = u'(사용자명)'
password_file = "user-password.py" #비번 정보를 저장할 파일.
</syntaxhighlight>
 
그 다음 user-password.py를 pwb.py와 같은 디렉토리에 다음과 같이 입력한다. 그러면 비번 입력창 없이 바로 로그인이 가능해진다. 이 파일에 2개 이상의 계정을 등록해두면, 필요할 때 -user 파라미터로 다른 계정을 통해 작업할 수 있다.
<syntaxhighlight lang="python">
(u'(사용자명)', BotPassword(u'(봇이름)', u'(봇이름에 대한 비밀번호)'))
</syntaxhighlight>
 
한 계정으로도 여러 개의 봇을 생성할 수도 있다.


== 활용 예제 ==
== 활용 예제 ==

2023년 5월 20일 (토) 17:22 판

Pywikibot
소프트웨어 정보
개발 Pywikibot team
출시 2002년
언어 영어[1]
플랫폼 파이썬, 3.6 이상 버전.[2]
작성언어 파이썬
라이선스 비자유(Copyrighted)[3]
웹사이트 https://www.mediawiki.org/wiki/Manual:Pywikibot

Pywikibot(파이위키봇)은 미디어위키 기반의 위키에서 파이썬(Python) 스크립트를 돌려서 위키 편집을 용이하게 하는 도구이다. 위키미디어 재단에서 공식적으로 봇을 만드는 데 사용하는 도구이며, 이를 이용해서 위키 봇을 만드는 데에도 유용하게 이용할 수 있다. 미디어위키 홈페이지에 사용법이 자세하게 나와 있으며, 파이썬에 대한 지식이 부족해도 설치만 하면 내장된 스크립트를 통해서 위키를 쉽게 편집할 수 있게 도와준다.

2023년 기준으로 최신 버전은 8.1이다.

설치방법

우선 Pywikibot은 파이썬 기반으로 돌아가는 도구이기에 파이썬을 설치해야 한다. 파이썬 공식 홈페이지에서 다운로드를 받는다. 다만 윈도우 운영체제의 경우 파이썬을 설치만 해서는 명령 프롬프트(cmd.exe) 창에 python 명령어가 활성하되지 않기에 반드시 제어판- 시스템-왼쪽의 고급 시스템 정보-고급 탭-아래 환경 변수 버튼을 누르고 path 변수를 python 실행파일이 설치된 폴더의 디렉토리를 지정해야 한다.

그 다음에는 Pywikibot 설치 페이지에서 Pywikibot 소스를 다운로드 받는다. python 명령어가 명령 프롬프트에 활성화된 것을 확인하면 명령 프롬프트 창에 아래와 같이 입력해서 로그인이 되는지 확인하면 된다.

> cd "c:\users\username\pywikibot"
> python pwb.py login

사용방법

일단 메인 소스인 pwb.py를 이용해서 실행시킨다. 명령어 구조는 다음과 같다.

python pwb.py (script명) (부가변수명)

각 기본 스크립트의 설명에 대해서는 mw:Manual:Pywikibot/Scripts를 참조하자. 참고로 각 스크립트들은 script 폴더에 내장되어 있다. 파이썬에 대한 지식이 부족해도 봇을 쉽게 다룰 수 있다.

로그인 방법

user-config.py를 지정하지 않았다면 user-config.py를 지정하라는 메시지가 자동으로 띄운다. 안내창 대로 입력하면 된다. 그러나 기본적으로 설정된 위키 이외의 위키에서 사용하려면 이 방법으로는 사용이 안 된다. 따라서 아래에 서드파티 위키에서 사용하는 방법을 안내할 것이다.

user-config.py 작성방법

그냥 스크립트 창에 python pwb.py login라고 입력해도 user-config를 스크립트가 알아서 지정해주지만 사전에 파일을 작성하면 도움이 된다.

mylang = '언어 코드' # 한국어면 'ko', 영어면 'en'으로 입력
family = '패밀리 이름' # 사이트의 패밀리 이름. 예를 들면 위키백과는 'wikipedia'라고 입력하면 된다.
usernames['패밀리 이름']'언어코드'] = '사용자 계정명'
# password_file = 'user-password.py' # 비밀번호를 저장한 파일명

참고로 usernames는 딕셔너리 형태이기에 사이트를 여러 개 이용할 경우 아래처럼 여러 개 입력할 수도 있다.

usernames['libre']['ko'] = 'utolee90'
usernames['wikipedia']['ko'] = 'Letter Light'
...

아래와 같이 -all 옵션을 붙이면 이 등록한 사이트를 전부 로그인할 수도 있다.

> python pwb.py login -all

또한 password_file 경로를 지정하면 로그인할 때 비밀번호를 직접 입력하지 않고도 로그인이 가능해진다. 참고로 보통 파일명은 user-password.py 형태로 지정한다. 비밀번호 정보는 user-password.py에 아래와 같은 파이썬 튜플 형식 중 하나를 이용해서 지정하면 되며, 사이트 하나 정보는 튜플 하나에 대응한다.

('계정명', '비밀번호') # 사이트가 하나만 있을 때. 이 경우 myfamily, lang은 user-config.py에 지정한 형식대로 출력한다. 
('사이트명', '계정명', '비밀번호') # 사이트가 여러 개 있을 때에는 사이트명을 튜플에 명시해야 한다.
('언어코드', '사이트명', '계정명', '비밀번호') # 언어코드도 명시할 필요가 있으면 맨 앞에 명시

특수:봇비밀번호를 이용해 봇 비밀번호를 지정했을 때에는 비밀번호를 입력하는 문자열 대신 BotPassword('봇계정명', '봇비밀번호')를 입력하면 된다. 봇비밀번호 생성 기능을 이용해서 봇을 만들 때는 아래 "새로운 봇 비밀번호 만들기"를 누른 뒤 봇 계정을을 지정한 후 봇의 권한을 설정하면 위키 엔진이 자동으로 봇 비밀번호를 지정한다. 이 봇 계정명의 형식은 "계정이름@봇이름" 형식으로 지정되며, 비밀번호는 봇 비밀번호를 생성할 때 제공하는 번호를 복사한 뒤 붙여넣으면 된다. 참고로 이 비밀번호를 분실할 경우 찾을 수 있는 방법이 없기에 봇을 삭제해야 한다. 봇 비밀번호를 설정하면 그냥 비밀번호를 입력할 때에 뜰 수 있는 경고 메시지가 나타나지 않거나 로그인 속도가 빨라지는 이점이 존재한다.

('계정명', BotPassword('봇계정명', '봇비밀번호')) # 사이트가 하나만 있을 때. 이 경우 myfamily, lang은 user-config.py에 지정한 형식대로 출력한다. 
('사이트명', '계정명', BotPassword('봇계정명', '봇비밀번호')) # 사이트가 여러 개 있을 때에는 사이트명을 튜플에 명시해야 한다.
('언어코드', '사이트명', '계정명', BotPassword('봇계정명', '봇비밀번호')) # 언어코드도 명시할 필요가 있으면 맨 앞에 명시

이전 버전에서 관리자 권한으로 로그인하기

2018년 이전 Pywikibot 버전에서는 delete.py 같이 관리자 권한이 필요한 스크립트를 처리할 때에는 관리자 계정 로그인을 지정해야 했다. 이를 위해 user-config.py 파일을 아래와 같이 usernames 부분 아래에 sysopnames 부분도 같이 설정하는 것이다.

mylang = 'ko'
family = '(사이트의 패밀리명)'
usernames['(패밀리명)']['ko'] ='(사용자 계정명)'
sysopnames['(패밀리명)']['ko'] ='(상위권한 사용자 계정명)'
password_file = '(패스워드를 저장한 파이썬 파일명)'

그 다음 pwb를 이용해서 로그인할 때 다음과 같은 "-sysop" 코드를 뒤에 붙이면 된다.

> python pwb.py login -sysop

2020년 이후 버전 기준으로는 sysopnames 딕셔너리를 아예 사용하지 않고 봇을 연결한 주 계정에 관리자 권한이 있는지 여부를 인식한다. 즉 delete.py 같이 사용 시에 관리자 권한을 요구하는 스크립트도 다른 스크립트와 동일한 방법으로 사용할 수 있다.

서드파티 위키에서 사용하는 방법

리브레 위키 같은 서드파티 위키의 정보는 pywikibot을 처음 설치할 때에는 제공되지 않기에 사용자가 정보를 등록해야 한다. pywikibot을 설치한 디렉토리에서 pywikibot/families 디렉토리를 연다. 그 다음에 아래와 같이 패밀리명과 언어명, url 등을 입력해야 한다. 리브레 위키의 패밀리명은 편의상 'libre'로 지정한다. 이 때 예상치 못한 동작 오류를 방지하기 위해 패밀리명을 'libre'라고 지정할 경우 파일명도 'libre_family.py'로 통일하는 것이 필요하다.

from pywikibot import family        # pywikibot에서 사용하고 있다는 표시

class Family(family.Family):

    name = 'libre'
    langs = {'ko':'librewiki.net'}

    def protocol(self, code):     #사용 프로토콜, https를 사용할 경우 반드시 지정해야 한다.

       return 'https'
    def scriptpath(self, code): # 스크립트 경로
       return ''
    def ignore_certificate_error(self, code): #인증서 오류 무시하기 위한 코드.
        return True

마지막으로 pwb.py가 있는 디렉토리와 같은 곳에서 user-config.py를 아래와 같이 설정하면 된다.

family = 'libre'
mylang = 'ko'
usernames['libre']['ko']='(사용자명)'

이제 확인하려면 pwb.py가 있는 디렉토리로 가서 아래와 같이 명령어를 입력한다. 이 때에 비밀번호 입력창이 뜨면 비밀번호를 입력하면 로그인이 가능한 것을 확인할 수 있다.

PS C:\(directory)\Pywikibot>python pwb.py login

위의 봇 비밀번호 생성하는 방식은 리브레 위키 같은 서드파티 위키에서도 같은 방식으로 적용하면 된다.

활용 예제

문서 분류 바꾸기

가장 많이 활용하는 예제 중 하나로 문서의 분류명을 바꾼다. Pywikibot을 설치하면 category.py라는 파일에 의해 동작된다.

사용하려면 명령 프롬프트나 Powershell 등을 이용해서 Pywikibot에 로그인한 뒤 아래와 같은 형식으로 명령어를 입력하면 된다.

    python pwb.py category (동작) [-(옵션)]

여기서 동작(Action)은 "add"처럼 -기호를 사용하지 않고, 반대로 추가 옵션들은 반드시 -기호를 사용한 후에 서술해야 한다. 우선 동작의 옵션은 다음과 같다.

  • add - 분류를 추가한다. 사용 시에 "-filename:"같은 특별한 옵션이 없을 경우 특정 문서와 링크로 연결된 문서에 대해 분류 추가에 대한 질의응답을 실시한다.
  • move - 분류를 바꾼다. 사용 시에 "-filename:" 같은 특별한 옵션이 없을 경우 위키 내부의 모든 문서에 대해 분류 변경을 시도한다.
  • remove -분류를 지운다. 사용 시에 "-filename:" 같은 특별한 옵션이 없을 경우 위키 내부의 모든 문서에 대해 분류 제거를 시도한다.
  • tidy - 분류 안에 있는 문서들을 하위 분류로 옮긴다. 특정한 분류명 A를 지정하면 분류 A에 있으면서 A의 하위 분류에 있지 않은 문서들에 대해 하위 분류로 이동할 지 질의한다.
  • tree - 특정 분류와 그 하위 분류 구조를 보여준다.
  • listify - 특정 분류 안에 있는 문서들을 보여준다.

예를 들면 분류 A를 분류 AB로 옮기는 것을 시도할 때 아래와 같은 코드를 입력하면 된다.

   python pwb.py category move -from:"A" -to:"AB"

문서 내부의 특정 텍스트를 다른 것으로 바꾸기

문서 내부의 특정 어구를 찾아서 바꾸는 스크립트이다. replace.py 스크립트를 사용한다. 다음과 같이 사용할 수 있다.

    python pwb.py replace [-(옵션)]

옵션에는 여러 가지가 있는데, 우선 "user-fixes.py"문서에 지정된 패턴대로 텍스트 치환을 시도하려면 다음과 같이 입력하면 된다.

   $ python pwb.py replace -fix:(example) [(-옵션)]

여기서 fix는 특정 옵션으로 바꾼다는 것을 의미한다. 예를 들면 fix:HTML이라고 표현하면 HTML 태그를 미디어위키 문법에 맞게 고칠 수 있다.

다른 방법으로 하나의 어구를 바꿀 때는 다음처럼 사용할 수 있다. regex 태그를 사용하면 바꾸는 내용을 일반적인 키워드가 아닌 정규 표현식 형태로 변화시킨다.

    python pwb.py replace -start:! [-regex] "(바꾸기전1)" "(바꾼후1)" "(바꾸기전2)" "(바꾼후2)" ... 

또 다음과 같은 옵션을 사용할 수도 있다. 여기서 이 스크립트를 작동시키려면 반드시 아래의 조건 중 하나는 명시해야 한다.

  • cat:(분류명) - 특정 분류 안에 있는 문서들을 대상으로 한다.
  • file:(파일명) - 특정 파일명의 텍스트 문서 안에 적힌 문서들을 대상으로 한다.
  • links:(문서명) - 지정한 문서 내부에서 링크로 연결된 문서들을 대상으로 한다.
  • page:(문서명) - 특정 문서를 대상으로 한다.
  • ref:(파일명) - 지정한 문서를 연결하는 링크를 포함하는 문서들들 대상으로 한다.
  • start:(문서명) - 위키 내에서 특정 문서명을 시작으로 모든 문서들을 대상으로 한다. "-start:!"라고 표시하면 모든 문서에 대해 찾아 바꾸기를 수행할 수 있다.
  • xml:(xml파일명) - 특수:내보내기를 통해 작성된 xml 파일 안에 있는 문서들을 대상으로 수행한다.

더 자세한 내용은 Pywikibot/사용법 문서를 참조한다.

특정 문자가 인식되지 않을 때

쉘 환경에서 일부 문자는 프로그램 예약 문자로 인식되지 않기 때문에 이스케이프 문자를 추가로 붙여야 한다. 자세한 내용은 이스케이프 문자 문서를 참고할 것.

  • 명령 프롬프트는 |, &, " 등이 예약어이기에 입력하기 위해서 앞에 이스케이프 문자 ^를 붙여야 할 때가 있다. 단 따옴표 안에서는 이스케이프 문자를 활용할 필요는 없다.
  • PowerShell(파워셸)에서는 작은따옴표('), 큰따옴표(")가 공백을 포함한 문자열을 표현하기 위한 예약어이다. replace.py에서 명령어 셋에서 큰따옴표를 반드시 입력해야 하는 부분이 있기에 큰따옴표를 입력하는 부분은 작은따옴표로 감싸야 한다. 또한 큰따옴표 안에 큰따옴표를 입력하기 위해서는 큰따옴표 두 개를 붙이면 된다. 예를 들면 "나는 너에게 "사랑한다"고 말하고 싶다"를 입력하고 싶으면 '"나는 너에게 ""사랑한다""고 말하고 싶다"'라고 입력해야 하는 식이다.

참조

각주

  1. 프로그램 특성상 UTF-8 기반 언어면 위키 편집이 가능하므로 한국어 위키 편집에도 별다른 제약사항이 존재하지 않는다.
  2. 최신 버전인 8.x 버전 기준.
  3. 일부 코드는 공개 소스를 기반으로 사용하여 공개 라이선스이다. mw:Pywikibot/Overview 참조.