Pywikibot: 두 판 사이의 차이

잔글 (→‎리브레 위키에서 사용하는 방법: 의미 더 명료하게)
29번째 줄: 29번째 줄:


== 리브레 위키에서 사용하는 방법 ==
== 리브레 위키에서 사용하는 방법 ==
우선 pywikibot을 설치한 디렉토리에서 pywikibot/families 디렉토리를 연다. 그 다음에 아래와 같이 패밀리명과 언어명, url 등을 입력해야 한다. 여기서 파일명을 반드시 (위키명)_family.py로 지정해야 한다.
우선 pywikibot을 설치한 디렉토리에서 pywikibot/families 디렉토리를 연다. 그 다음에 아래와 같이 패밀리명과 언어명, url 등을 입력해야 한다. 여기서 파일명을 반드시 libre_family.py로 지정해야 한다.


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">

2020년 7월 31일 (금) 19:24 판

{{{이름}}}
소프트웨어 정보
플랫폼 파이썬, 2.7 버전 혹은 3.3 이상 버전.[1]
라이선스 비자유(Copyrighted)[2]

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

설치방법

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

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

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

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

사용방법

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

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

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

리브레 위키에서 사용하는 방법

우선 pywikibot을 설치한 디렉토리에서 pywikibot/families 디렉토리를 연다. 그 다음에 아래와 같이 패밀리명과 언어명, url 등을 입력해야 한다. 여기서 파일명을 반드시 libre_family.py로 지정해야 한다.

from pywikibot import family        # pywikibot에서 사용하고 있다는 표시                                          
                                                                                
class Family(family.Family):                                                    
   def __init__(self):                                                         
        family.Family.__init__(self)                                            
        self.name = 'libre'                                                       
        self.langs = {                                                          
            'ko': 'librewiki.net',         #url 입력하기                      
        }

   def protocol(self, code):     #사용 프로토콜, https를 사용할 경우 반드시 지정해야 한다.                                             
       return 'https'
   def scriptpath(self, code): # 스크립트 경로
       return ''
   def apipath(self, code): # api 경로
       return '/api.php'

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

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

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

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

다만 얘기치 못한 편집 제한상황에 대처하기 위해 봇 비밀번호를 설정할 것을 권장한다. 봇 비밀번호를 만들면 API를 이용해서 접근하기에 비번을 입력하지 않아도 접근할 수 있다. 우선 Pywikibot으로 봇을 사용할 계정으로 로그인 한 뒤 특수:봇비밀번호 문서를 열고 봇 이름을 지정한다. 그러면 이 특수문서가 그 봇에 대해 비밀번호를 생성한다. 그 다음 user-config.py에 아래와 같이 설정한다.

mylang = 'ko'
family = 'libre'
usernames['libre']['ko'] = u'(사용자명)'
password_file = "user-password.py" #비번 정보를 저장할 파일.

그 다음 user-password.py를 pwb.py와 같은 디렉토리에 다음과 같이 입력한다. 그러면 비번 입력창 없이 바로 로그인이 가능해진다.

(u'(사용자명)', BotPassword(u'(봇이름)', u'(봇이름에 대한 비밀번호)'))

한 계정으로도 여러 개의 봇을 생성할 수도 있다.

활용 예제

문서 분류 바꾸기

가장 많이 활용하는 예제 중 하나로 문서의 분류명을 바꾼다. 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 파일 안에 있는 문서들을 대상으로 수행한다.

특정 문자가 입식이 안 될때(이스케이프 시퀀스)

특정문자는 인식이 안 되기 때문에 이스케이프 문자를 추가로 붙여야 한다.

  • "
    • \"
  • |
    • ^| (Windows)

참조

각주

  1. 2.7버전은 추후 지원 중단할 예정
  2. 일부 코드는 공개 소스를 기반으로 사용하여 공개 라이선스이다. mw:Pywikibot/Overview 참조.