- Pywikipedia 설치
- Pywikipediabot
1 python 설치 확인[ | ]


대부분의 Linux에는 Python이 설치되어 있다. (CentOS 6 최소 설치 패키지에도 포함되어 있다.)
python -V
명령어로 확인해 보자.
Console
Copy
[root@zetawiki ~]# python -V
Python 2.7.9
2013년 12월 현재, 권장되는 버전이 2.7.x 라고 하니 업그레이드 하자. (파이썬 2.4.3 버전, 2.6.6 버전에서 봇 최신버전이 안돌아가더라...)[1]
2 svn 설치 확인[ | ]

Console
Copy
[root@zetawiki ~]# svn --version
svn, version 1.6.11 (r934486)
compiled Mar 6 2014, 10:49:10
... (생략)
3 Pywikipedia 설치[ | ]
- Pywikipedia는 bot의 이름이며, Python으로 작성되었으며 봇 중에 가장 널리 사용되고 있다.
- 기본적으로 위키백과에서 사용하도록 설정되어 있지만, 설정에 따라 다른 미디어위키 사이트에도 적용할 수 있다.
- svn으로 설치하며, 현재위치 아래에 pywikipedia라는 폴더가 생기고 거기에 설치된다.
- 명령어
Bash
Copy
svn checkout http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/ pywikipedia
- 실행예시
Console
Copy
[root@zetawiki ~]# svn checkout http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/ pywikipedia
... (생략)
A pywikipedia/externals/simplejson/decoder.py
A pywikipedia/externals/simplejson/ordered_dict.py
U pywikipedia/externals/simplejson
Checked out external at revision 242.
Error validating server certificate for 'https://svn.toolserver.org:443':
- The certificate is not issued by a trusted authority. Use the
fingerprint to validate the certificate manually!
Certificate information:
- Hostname: *.toolserver.org
... (생략)
(R)eject, accept (t)emporarily or accept (p)ermanently? p
Console
Copy
svn: warning: Error handling externals definition for 'pywikipedia/externals/pycolorname':
svn: warning: OPTIONS of 'https://svn.toolserver.org/svnroot/drtrigon/externals/pycolorname': 200 OK (https://svn.toolserver.org)
svn: warning: Error handling externals definition for 'pywikipedia/externals/opencv':
svn: warning: OPTIONS of 'https://svn.toolserver.org/svnroot/drtrigon/externals/opencv': 200 OK (https://svn.toolserver.org)
Checked out revision 11781.
4 Pywikipedia 설정[ | ]
4.1 user-config.py 생성[ | ]
- 명령어
Bash
Copy
cd pywikipedia
echo "mylang='ko'" > user-config.py
echo "family='사이트명'" >> user-config.py
echo "usernames['사이트명']['ko']='봇계정명'" >> user-config.py
cat user-config.py
- 여기서 사이트명은 각 문서의 제목 바로 아래를 보면 확인할 수 있다.[2]
- 봇계정명은 봇을 돌릴 계정이름이며, 봇을 돌릴 용도의 계정이라는 점을 명시하기 위해 맨 뒤에 'bot'을 붙이는 것이 관례이다. 물론 이 계정으로 일반사용자처럼 로그인하거나 편집을 하는 것도 가능하다.
- 실행 예시
Console
Copy
[root@zetawiki ~]# cd pywikipedia
[root@zetawiki pywikipedia]# echo "mylang='ko'" > user-config.py
[root@zetawiki pywikipedia]# echo "family='Jmnote'" >> user-config.py
[root@zetawiki pywikipedia]# echo "usernames['Jmnote']['ko']='Jmnote_bot'" >> user-config.py
[root@zetawiki pywikipedia]# cat user-config.py
mylang='ko'
family='Jmnote'
usernames['Jmnote']['ko']='Jmnote_bot'
4.2 사이트명_family.py 생성[ | ]
- 명령어
Bash
Copy
cat > ./families/사이트명_family.py <<END_SCRIPT
# -*- coding: utf-8 -*-
import config, family, urllib
class Family(family.Family):
def __init__(self):
family.Family.__init__(self)
self.name = '사이트명'
self.langs = {
'ko': '서버주소',
}
self.namespaces[2]['ko'] = u'User'
self.namespaces[3]['ko'] = u'User_talk'
def version(self, code):
return "미디어위키버전"
def scriptpath(self, code):
return '미디어위키스크립트경로'
def path(self, code):
return '미디어위키스크립트경로/index.php'
END_SCRIPT
- 미디어위키 버전, 미디어위키 스크립트 경로를 확인하는 방법은 미디어위키 버전 확인하기를 참고
- 실행 예시
Console
Copy
[root@zetawiki pywikipedia]# cat > ./families/Jmnote_family.py <<END_SCRIPT
> # -*- coding: utf-8 -*-
> import config, family, urllib
> class Family(family.Family):
> def __init__(self):
> family.Family.__init__(self)
> self.name = 'Jmnote'
> self.langs = {
> 'ko': 'jmnote.com',
> }
> self.namespaces[2]['ko'] = u'User'
> self.namespaces[3]['ko'] = u'User_talk'
> def version(self, code):
> return "1.23.3"
> def scriptpath(self, code):
> return '/w'
> def path(self, code):
> return '/w/index.php'
> END_SCRIPT
- 실행결과확인 예시
Console
Copy
[root@zetawiki pywikipedia]# cat ./families/Jmnote_family.py
# -*- coding: utf-8 -*-
import config, family, urllib
class Family(family.Family):
def __init__(self):
family.Family.__init__(self)
self.name = 'Jmnote'
self.langs = {
'ko': 'jmnote.com',
}
self.namespaces[2]['ko'] = u'User'
self.namespaces[3]['ko'] = u'User_talk'
def version(self, code):
return "1.23.3"
def scriptpath(self, code):
return '/w'
def path(self, code):
return '/w/index.php'
5 로그인 테스트[ | ]
- 명령어
Bash
Copy
python login.py
위 명령어를 입력하면 패스워드를 물어본다. 한번 로그인하면 login-data 폴더에 쿠키 정보 파일이 생성되고, 향후 명령어 실행시 자동로그인된다.
- 실행 예시1 (로그인 성공)
Console
Copy
[root@zetawiki pywikipedia]# python login.py
WARNING: Required package missing: BeautifulSoup.py
WARNING: A required package is missing, but externals can automatically install it. If you say Yes, externals will need administrator privileges, and you might be asked for the administrator password.
WARNING: Give externals permission to try to install package? (y/N)
- → y ↵ Enter
Console
Copy
WARNING: Download package "BeautifulSoup.py" from https://pypi.python.org/packages/syntaxhighlight/B/BeautifulSoup/BeautifulSoup-3.2.0.tar.gz
WARNING: Size of download: 31077 byte(s)
WARNING: MIME type: ['application', 'x-tar']
WARNING: Extract package "BeautifulSoup.py" to /root/pywikipedia/externals/BeautifulSoup.py.
WARNING: Install package "BeautifulSoup.py" by applying patch to /root/pywikipedia/externals/BeautifulSoup.py.
patching file BeautifulSoup.py
WARNING: Package "BeautifulSoup.py" installed to /root/pywikipedia/externals/BeautifulSoup.py.
Password for user Jmnote_bot on Jmnote:ko:
- → 봇 계정의 패스워드 입력 ↵ Enter
Console
Copy
No handlers could be found for logger "pywiki"
Logging in to Jmnote:ko as Jmnote_bot via API.
Should be logged in now
- → 로그인 성공
Console
Copy
[root@zetawiki pywikipedia]# ll ./login-data
total 12
-rw-r--r-- 1 root root 143 Jan 21 20:48 Jmnote-ko-Jmnote bot-login.data
-rw-r--r-- 1 root root 143 Jan 21 20:48 Jmnote-ko-None-login.data
-rw-r--r-- 1 root root 161 Jan 21 20:41 README
- → login-data 폴더에 쿠키 정보 파일이 생성되었다.
- 실행 예시2 (로그인 실패 - 아이디 또는 패스워드 없음)
Console
Copy
[root@zetawiki pywikipedia]# python login.py
Password for user Jmnote_bot on Jmnote:ko:
Logging in to Jmnote:ko as Jmnote_bot via API.
Login failed. Wrong password or CAPTCHA answer?
API login failed, retrying using standard webpage.
Logging in to Jmnote:ko as Jmnote_bot
Login failed. Wrong password or CAPTCHA answer?
- → 당연한 말이지만 아이디가 없으면 위와 같이 로그인에 실패한다. 사이트에서 계정을 먼저 만든 후에 해보시라.
6 여담[ | ]
- 로그인까지 성공하였다면, 이제 Pywikipedia 봇의 여러 기능들을 사용할 수 있다.
- 필자가 가장 필요하다고 생각했던 봇은 이중 넘겨주기 수정 봇이다. 그것에 대해 보려면 미디어위키 이중 넘겨주기 수정 봇 돌리기를 참고하시라.
7 같이 보기[ | ]
- Pywikipedia 이중 넘겨주기 수정 봇 돌리기
- Pywikipedia 분류 수정 봇 돌리기
- Pywikipedia 내용 수정 봇 돌리기
- Pywikipediabot 버전 확인
- Pywikipediabot 로그인 버그
- Pywikibot 설치
8 주석[ | ]
- ↑ http://www.mediawiki.org/wiki/Manual:Pywikipediabot/Quick_Start_Guide
- ↑ LocalSettings.php에서 지정하는 $wgSitename 변수값과 같다.
9 참고[ | ]
편집자 Jmnote bot Jmnote
로그인하시면 댓글을 쓸 수 있습니다.
- 분류 댓글:
- Python (25)
리눅스 Python 2.7 컴파일 설치 ― …리눅스 Python 2.7 컴파일 설치 ― …리눅스 Python 2.7 컴파일 설치 ― …리눅스 Python 2.7 컴파일 설치 ― …리눅스 Python 2.7 컴파일 설치 ― Jmnote리눅스 Python 2.7 컴파일 설치 ― ㅇㅇㅇ미운코딩새끼 ― 승호 도령미운코딩새끼 ― 불탄고등어미운코딩새끼 ― 김레이미운코딩새끼 ― 호박이미운코딩새끼 ― Junhg0211미운코딩새끼 ― 김왼손미운코딩새끼 ― 용딘이미운코딩새끼 ―Pinkcrimson
유기농냠냠파이썬 ― 호박유기농냠냠파이썬 ― 이에스유기농냠냠파이썬 ― 이승현파이썬 global ― Jmnote파이썬 global ― John Jeong파이썬 global ― Jmnote파이썬 global ― John Jeong파이썬 global ― John Jeong파이썬 global ― John Jeong파이썬 global ― Jmnote파이썬 global ― John Jeong