매뉴얼:Pywikibot/PAWS
- 더 자세한 사항은 Wikitech:PAWS에서 확인하세요.
이 문서는 PAWS(Pywikibot: A Web Shell)를 이용하여 위키미디어 클라우드 서비스의 노트북을 이용한 Pywikibot 의 빠른 대화형 개요를 제공합니다.
bash file.sh
를 호출할 수도 있습니다.
위키미디어 계정 만들기
이 과정을 빠르게 지나가려면 위키백과 또는 위키미디어에 계정이 있어야 합니다. 특수:계정만들기로 하나 만드세요.
계정을 만든 후에는, https://test.wikipedia.org/ 에 들려서 자신이 만든 계정이 브라우저 오른쪽 최상단에 나타나는지 확인해주세요. (이것은 작업 T120327 근처에서 동작합니다.)
위키미디어의 새 사용자라면 그 계정으로 메타, 위키미디어, 위키백과, 위키데이터, 위키미디어 공용 등을 한 번씩 들러주세요. 그리고 맨 위에 있는 메시지를 모두 읽고 지우세요.
노트북으로 접속하기
노트북에서 진행을 시작하려면, https://hub-paws.wmcloud.org/hub 로 가세요.
‘Sign in with MediaWiki’를 클릭하고 나서 ‘OAuth 이용 인증’에 동의하는지 물어볼 때 ‘허용합니다’를 클릭합니다. PAWS에 처음 접속하려면, 서버 생성이 필요합니다. 초록색 ‘Start my Server’ 버튼을 클릭합니다. 새로운 서버가 시작되려면 몇 분 정도 기다리는 것이 보통입니다.
완료되었다면, https://paws.wmflabs.org/paws/user/<username>/tree처럼 URL에다가 넘겨주기가 됩니다.
단말기 시작하기
새로운 대화형 단말기를 시작하기 위해,
- $paws에 가서
- File > New > Terminal을 클릭하세요
이러면 새 창에 리눅스 ‘$’ 프롬프트가 열립니다.
이 단말기는 모방기가 아닙니다. 실제 배시 셀은 도커 용기에 있는 실제 리눅스 설치의 일부분으로, 그렇기에 어떠한 배시 명령어든 쓸 수 있고, 또한 설치한 리눅스에서 사용가능한 어떠한 명령어도 쓸 수 있습니다.
사용 가능한 일부 명령어를 보려면, ls /bin/
.을 쓰세요.
$ ls /bin/
bash cat domainname journalctl mkdir pwd stty tar zcmp
unzip2 chacl echo kill mknod rbash su tempfile zdiff
../..
$ ls /usr/bin/
2to3-3.4 dvipdf lcf printf systemd-path
X11 dwp ld prlimit systemd-run
../..
To see them all, press TAB twice.
위키에 로그인하기
이는 서버 내에 계정이 만들어질 것이고 명령줄에서 로그인이 허가됩니다. 아래의 명령어는 연습위키에 접속할 수 있음을 보여줍니다. OAuth를 이용한다면, 비밀번호를 입력할 필요가 없습니다.
$ pwb.py login
Logging in to wikipedia:test as <username>
Logged in on wikipedia:test as <username>.
$HOME
디렉토리(/home/paws
) 내에 ‘user-config.py’라는 이름의 파일을 만들고 ‘mylang ’ 및 ‘family’ 변수를 추가한다면 pywikibot에서 다른 위키로 연결할 수 있습니다:
mylang = 'test'
family = 'wikipedia'
You can type vim user-config.py
in the terminal, then I to insert text, add the text, then Esc to exist insert mode, then :wq and Enter to finishing editing.
문서 만들기
문서를 만들려면, 단말기에 사용자 이름과 ‘<username>’을 대신하여 아래의 명령어를 입력하고, 바뀜을 즉시 수락하려면 ‘Y’를 누르세요.
$ pwb.py add_text -up -talk -page:"User talk:<username>" -text:"Hello. ~~~~"
Loading User talk:<username>...
>>> User talk:<username> <<<
@@ -0,0 +1 @@
+ Hello. ~~~~
Do you want to accept these changes? ([Y]es, [N]o, [a]ll, open in [b]rowser): Y
Page [[User talk:<username>]] saved
위키를 편집했습니다. 웹 브라우저 상에서 https://test.wikipedia.org/wiki/User_talk:<username>를 열어 바뀜을 봅시다.
‘-help’ 명령줄 옵션과 이러한 명령줄 스크립트 각각에 대해 자세히 볼 수 있습니다.
$ pwb.py add_text -help
...
문서 꺼내오기
많은 문서를 가져오는 것은 ‘listpages’ 명령어로 합니다.
이전 문단에서 만들었던 문서의 내용을 가져오려면, 다음 명령어를 입력하세요:
$ pwb.py listpages -page:"User talk:<username>" -save
1 <username>
Saving User talk:<username> to /home/paws/User_talk_<username>
1 page(s) found
이제 $ ls
을 실행하면 저장된 문서가 나타납니다.
실제 스크립트 예시
위키백과 상에서 사용된 웹사이트가 URL를 바꾼다면 위키백과 상의 해당 링크는 낡게 되고, 만일 웹사이트가 오래된 URL에서 새 URL로 넘겨주기되지 않았다면 깨진 링크가 될 수도 있습니다. 예시로, 브리태니커 백과사전이 링크를 다음과 같이 바꾸었습니다: http://www.britannica.com/EBchecked/media/를 http://www.britannica.com/topic/[topic name]/images-videos/*로 이동했습니다. 당신은 낡은 URL을 사용하는 영어 위키백과 문서의 목록을 w:Special:LinkSearch/http://www.britannica.com/EBchecked/media에서 찾을 수 있습니다. 이 모든 링크를 업데이트 시키는 건 상당한 시간이 걸릴 겁니다. 다행히도, 브리태니커 백과사전이 낡은 URL에서 새로운 URL로 리다이렉트 시켜주었기 때문에 임의적으로 고쳐질 필요는 없습니다.
간단한 예로는, 영어 위키백과는 최근 http://www.britannica.com/EBchecked/ 대신에 http://britannica.com/EBchecked/ 링크를 포함하고 있습니다. 즉, ‘www.’ 하위 도메인은 URL 상에서 사라집니다.
최근 영어 위키백과에는 15건의 사례가 있습니다.
다른 언어로 된 위키백과 또한 이러한 문제를 지니고 있습니다. 가령, 독일어 위키백과 상에 1건의 사례가 있습니다.
이 링크를 고치기 위해, 우리는 Pywikibot replace.py 스크립트를 사용할 수 있습니다. 이 견본에서 우리는 영어 위키백과의 자동 편집에 대한 엄격한 규칙이 있으므로, 위키에 작성하는 것을 막기 위해 ‘-simulate’ 인수를 사용할 것입니다.
먼저 http://britannica.com/EBchecked/에 연결된 모든 문서를 나열하세요.
$ pwb.py listpages -lang:en -weblink:"britannica.com/EBchecked/"
1 Bhatner fort
2 Mohammad Ishaq Khan
3 Fringe theories/Noticeboard/Archive 7
4 El Riego phase
5 Catalonia/Archive 4
6 Stephen I of Hungary
7 Stephen I of Hungary/Archive 1
8 Väinö Tanner
9 Tokaji
10 Transylvania/Archive5
11 Hungarians in Romania
12 Transylvania
13 Uttarakhand
14 Françoise Giroud
14 page(s) found
이제 우리는 이 문서들이 실제로 문서 내에 실질적인 URL을 가지고 있는지 확인합니다. 즉, 여기에는 틀은 사용하고 있지 않습니다.
$ pwb.py listpages -lang:en -weblink:"britannica.com/EBchecked/" -grep:"britannica.com\/EBchecked"
1 Bhatner fort
2 Mohammad Ishaq Khan
3 Fringe theories/Noticeboard/Archive 7
4 El Riego phase
5 Catalonia/Archive 4
6 Stephen I of Hungary
7 Stephen I of Hungary/Archive 1
8 Väinö Tanner
9 Tokaji
10 Transylvania/Archive5
11 Hungarians in Romania
12 Transylvania
13 Uttarakhand
14 Françoise Giroud
14 page(s) found
이제 ‘replace’를 사용하여 빠진 ‘www.’를 추가하세요.
$ pwb.py replace -lang:en -simulate -weblink:"britannica.com/EBchecked/" -grep:"britannica.com\/EBchecked" "http://britannica.com/EBchecked/" "http://www.britannica.com/EBchecked/"
The summary message for the command line replacements will be something like: Bot: Automated text replacement (-http://britannica.com/EBchecked/ +http://www.britannica.com/EBchecked/)
Press Enter to use this automatic message, or enter a description of the
changes your bot will make:
Logging in to wikipedia:en as <username>
Retrieving 14 pages from wikipedia:en.
Retrieving 14 pages from wikipedia:en.
>>> Stephen I of Hungary <<<
@@ -47 +47 @@
- Stephen's birth date is uncertain because it was not recorded in contemporaneous documents.{{sfn|Györffy|1994|p=64}} Hungarian and Polish chronicles written centuries later give three different years: 967, 969 and 975.{{sfn|Kristó|2001|p=15}} The unanimous testimony of his three late 11th-century or early 12th-century [[hagiographies]] and other Hungarian sources, which state that Stephen was "still an adolescent" in 997,<ref>''Hartvic, Life of King Stephen of Hungary'' (ch. 5), p. 381.</ref> substantiate the reliability of the later year (975).{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}} Stephen's ''[[Life of Saint Stephen, King of Hungary (Vita minor)|Lesser Legend]]'' adds that he was born in [[Esztergom]],{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}}<ref name=Britannica>{{cite encyclopedia|title=Stephen I|url=http://britannica.com/EBchecked/topic/565415/Stephen-I|encyclopedia=[[Encyclopædia Britannica]]|publisher=Encyclopædia Britannica, Inc.|year=2008|accessdate=2008-07-29}}</ref> which implies that he was born after 972 because his father, [[Géza, Grand Prince of the Hungarians]], chose Esztergom as royal residence around that year.{{sfn|Györffy|1994|p=64}} Géza promoted the spread of Christianity among his subjects by force, but never ceased worshipping pagan gods.{{sfn|Kontler|1999|p=51}}{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}} Both his son's ''[[Life of Saint Stephen, King of Hungary (Vita maior)|Greater Legend]]'' and the nearly contemporaneous [[Thietmar of Merseburg]] described Géza as a cruel monarch, suggesting that he was a despot who mercilessly consolidated his authority over the rebellious Hungarian lords.{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}}{{sfn|Bakay|1999|p=547}}
+ Stephen's birth date is uncertain because it was not recorded in contemporaneous documents.{{sfn|Györffy|1994|p=64}} Hungarian and Polish chronicles written centuries later give three different years: 967, 969 and 975.{{sfn|Kristó|2001|p=15}} The unanimous testimony of his three late 11th-century or early 12th-century [[hagiographies]] and other Hungarian sources, which state that Stephen was "still an adolescent" in 997,<ref>''Hartvic, Life of King Stephen of Hungary'' (ch. 5), p. 381.</ref> substantiate the reliability of the later year (975).{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}} Stephen's ''[[Life of Saint Stephen, King of Hungary (Vita minor)|Lesser Legend]]'' adds that he was born in [[Esztergom]],{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}}<ref name=Britannica>{{cite encyclopedia|title=Stephen I|url=http://www.britannica.com/EBchecked/topic/565415/Stephen-I|encyclopedia=[[Encyclopædia Britannica]]|publisher=Encyclopædia Britannica, Inc.|year=2008|accessdate=2008-07-29}}</ref> which implies that he was born after 972 because his father, [[Géza, Grand Prince of the Hungarians]], chose Esztergom as royal residence around that year.{{sfn|Györffy|1994|p=64}} Géza promoted the spread of Christianity among his subjects by force, but never ceased worshipping pagan gods.{{sfn|Kontler|1999|p=51}}{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}} Both his son's ''[[Life of Saint Stephen, King of Hungary (Vita maior)|Greater Legend]]'' and the nearly contemporaneous [[Thietmar of Merseburg]] described Géza as a cruel monarch, suggesting that he was a despot who mercilessly consolidated his authority over the rebellious Hungarian lords.{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}}{{sfn|Bakay|1999|p=547}}
Do you want to accept these changes? ([y]es, [N]o, [e]dit, open in [b]rowser, [a]ll, [q]uit): N
...
PAWS 및 색상을 지원하는 단말기에서 바뀜의 차이는 초록색 글자로 ‘www.’가 추가되어 보여질 것이고, 이는 제안된 바뀜을 찾기 쉽게 만들 것입니다.
Pywikibot 내부
다음은 PAWS 파이썬의 시즌을 사용합니다.
- PAWS 홈에 가서
- ‘New’를 오른쪽 버튼으로 클릭하고
- ‘Python 3’을 선택합니다.
이러면 새로운 창이 열립니다.
텍스트 박스 안에 아래의 명령문을 적고 Cell 메뉴에서 'Run'을 클릭하거나 shift+enter를 누르세요.
import pywikibot
새 텍스트 박스가 밑에 생길 겁니다. 아래의 명령문을 통해 https://test.wikipedia.org/ 와 연결된 새 APISite 항목을 만드세요.
site = pywikibot.Site('test', 'wikipedia')
Describe "site" by entering it into the new text box and selecting "Run".
site
It should show
Out[3]: APISite("test", "wikipedia")
Create a page object:
page = pywikibot.Page(site, 'test')
Check it exists by running:
page.exists()
It should output
VERBOSE:pywiki:Found 1 wikipedia:test processes running, including this one. Out[5]: True
Show the text on the page:
page.text
Change the page text in the object:
page.text = 'Hello world'
Save the page to the wiki:
page.save()
The response should be:
Page [[Test]] saved
INFO:pywiki:Page [[Test]] saved
The interactive Python 3 notebook allows many lines to be run together. The above could be put into one text box and Run
import pywikibot
site = pywikibot.Site('test', 'wikipedia')
page = pywikibot.Page(site, 'test')
page.text = 'Hello world!'
page.save()
The log of your interactive Python session can be saved or downloaded for future reference.
PAWS 내 온라인 문서에 접근하기
Pywikibot documentation may be found at wmdoc:pywikibot. It is primarily sourced from docstrings, which can be loaded in the interactive Python 3 notebook using the Python built-in function help().
For example, to look at the arguments for the save method above, run either:
help(page.save)
또는
help(pywikibot.Page.save)
Pywikibot 스크립트 편집하기
Pywikibot 라이브러리 및 스크립트는 /srv/paws에 위치하고 있으며, 읽기 전용입니다. 설치된 Pywikibot 라이브러리는 PAWS 내에서 수정할 수 없습니다.
스크립트는 내 PAWS 홈으로 복사한 후 수정해야 합니다.
예를 들어, 수정된 "checkimages.py"를 실행하려면:
터미널 안에서 cp /srv/paws/pwb/scripts/checkimages.py ~
를 입력합니다.
브라우저 안에서 [$paws PAWS 홈]에 가서 checkimages.py
를 클릭합니다.
브라우저 안에서 파일을 수정할 수 있습니다. 코드를 수정하세요. 가령, 1775번째 줄의 start = time.time()
코드 뒤에 새 1776번째 줄에 당신의 이름을 추가합니다: print("MYNAME's version.")
- 편집 인터페이스의 파일 메뉴에서 저장을 눌러 편집본을 저장합니다.
- 터미널 안에서
pwb.py ~/checkimages.py -simulate -limit:10
를 입력합니다. (If no '-limit:x' defined, the program would run until all images checked, it may take long time.)
같이 보기
- wikitech:PAWS/PAWS and Pywikibot
- Using Pywikibot with PAWS tutorial - A tutorial that helps users get started with using Pywikibot and PAWS
- Example notebooks using Pywikibot - A list of notebooks hosted on PAWS that use Pywikibot
- 한 사용자의 PAWS 요약 (예: API 및 데이터베이스 접근)
- Source code on GitHub
- Small wiki toolkits workshop about running basic Pywikibot scripts
- Self-study materials based on the small wiki toolkits workshop
- Workshop handbook based on the small wiki toolkits workshop
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.