دليل:باي ويكي بوت/PAWS
- انظر Wikitech:PAWS لمزيد من التفاصيل.
هذا المستند يوفر نظرة عامة تفاعلية سريعة على باي ويكي بوت باستخدام مفكرة مُستضافة على بيئة معامل ويكيميديا باستخدام PAWS (PAWS: قشرة ويب).
bash file.sh
.
إنشاء حساب على ويكيميديا
لاتباع هذا الشرح التفصيلي، أنت فقط بحاجة إلى حساب على ويكيبيديا (ويكيميديا). استخدم خاص:أنشئ حسابًا.
بمجرد أنك قد أنشأت حسابًا، من فضلك قم بزيارة https://test.wikipedia.org/ وتفحص إن كان اسم المستخدم الخاص بك يظهر أعلى الركن الأيمن (هذا يعمل حول T120327).
If you are a new user on Wikimedia log in with your account on Meta-Wiki, Wikipedia, Wikidata, and Commons. And in each of them read and delete all pending messages you have (on the top).
سجل دخولك إلى مفكرة
لبدء مفكرة مُستضافة، اذهب إلى https://hub-paws.wmcloud.org/hub
اضغط على "Sign in with MediaWiki"، ثم اضغط على "Allow" عند طلب موافقة "Use OAuth for Authentication". المرة الأولى عند دخولك إلى PAWS، ستحتاج إلى إنشاء خادم. اضغط على زر "Start my Server" الأخضر. من الطبيعي الانتظار بضع دقائق حتى يبدأ الخادم الجديد.
بمجرد انتهائه، ستُحوَّل إلى مسار مثل https://paws.wmflabs.org/paws/user/<username>/tree
بدء طرفية
لبدء طرفية تفاعلية جديدة،
- اذهب إلى الصفحة الرئيسية
- اضغط على «New» على الجانب الأيمن
- اختر «Terminal».
- click: File > New > Terminal
هذا سيفتح نافذة جديدة بمسار https://paws.wmflabs.org/paws/user/<username>/terminals/1 برمز لينكس '$'.
هذه الطرفية ليست محاكي. إنها قشرة باش حقيقية، وهي جزء من لينكس مثبت موجود على حاوية دوكر، لذا يمكنك استخدام أي أمر من أوامر الباش، ويمكنك استخدام أي أوامر متاحة على لينكس المثبتة.
لرؤية بعض الأوامر المتاحة، استخدم 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.
تسجيل الدخول إلى الويكي
هذا سيثبت حسابك على الخادم وسيسمح لك بتسجيل الدخول من سطر الأوامر. ينبغي أن يؤكد الأمر التالي على أنك قد سجلت الدخول إلى testwiki. إنه يستخدم أوث (OAuth)، لذا أنت لست بحاجة لإدخال كلمة مرور.
$ pwb.py login
Logging in to wikipedia:test as <username>
Logged in on wikipedia:test as <username>.
يمكنك توصيل باي ويكي بوت بويكي مختلفة عن طريق إنشاء ملف باسم user-config.py في دليل $HOME
(/home/paws
) وإضافة متغيري mylang وfamily:
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
الآن إن ذهب إلى [$url قائمة ملفات PAWS]، ينبغي أن تكون الصفحة المحفوظة متواجدة.
مثال نص برمجي حقيقي
عندما يتغير مسار موقع مستخدم على ويكيبيديا، فإن الوصلات على ويكيبيديا تصبح قديمة، ومن الممكن أيضًا أن تصبح وصلات مكسورة إن كان الموقع لا يتحول من المسارات القديمة إلى الجديدة. على سبيل المثال، الموسوعة البريطانية قد غيرت وصلاتها، كنقل الصفحات من http://www.britannica.com/EBchecked/media/ إلى http://www.britannica.com/topic/[اسم الموضوع]/images-videos/*. يمكنك إيجاد قائمة استخدامات المسار القديم على ويكيبيديا الإنجليزية من https://en.wikipedia.org/wiki/Special:LinkSearch/http://www.britannica.com/EBchecked/media . تحديث كل تلك الوصلات يدويًا سيستغرق وقتًا طويلاً. لحسن الحظ أن الموسوعة البريطانية قد أبقت على التحويلات من وصلاتها القديمة إلى الوصلات الجديدة، ولذا هذا ليس بحاجة للإصلاح مباشرةً.
مثال أبسط، ويكيبيديا الإنجليزية تحتوي وصلات إلى http://britannica.com/EBchecked/ بدلاً من http://www.britannica.com/EBchecked/؛ أي أن نطاق "www." الفرعي مفقود في المسار.
يوجد حاليًا 14 حالة على ويكيبيديا الإنجليزية: https://en.wikipedia.org/wiki/Special:LinkSearch/http://britannica.com/EBchecked/
ويكيبيديا باللغات الأخرى لديها أيضًا نفس هذه المشكلة. مثلاً توجد حالة واحدة على ويكيبيديا الألمانية: https://de.wikipedia.org/wiki/Spezial:Weblinksuche/http://britannica.com/EBchecked/
لإصلاح تلك الوصلات، يمكنك استخدام النص البرمجي في باي ويكي بوت 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
الآن نفحص إذا ما كانت تلك الصفحات تحتوي المسار في الصفحة؛ أي أنها لا تستخدم قالبًا.
$ 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
الآن قم باستخدام التبديل لإضافة "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." المضافة بلون أخضر، مسهلاً البحث في التغييرات المقترحة.
بداخل باي ويكي بوت
الخطوة التالية هي أن نستخدم جلسة بايثون PAWS.
- اذهب إلى صفحة PAWS الرئيسية
- اضغط «New"/» على الجانب الأيمن
- اختر «Python 3».
سيفتح هذا نافذة جديدة.
في الصندوق النصي، قم بكتابة الآتي ثم في قائمة Cell اختر "Run" (أو اضغط Shift+Enter للتشغيل).
import pywikibot
صندوق نصي جديد سيظهر في الأسفل. قم بتشغيل الآتي لإنشاء كائن APISite متصل بموقع https://test.wikipedia.org/:
site = pywikibot.Site('test', 'wikipedia')
قم بوصف "site" عن طريق كتابتها في الصندوق النصي الجديد ثم اختيار "Run".
site
ينبغي أن تُظهر
Out[3]: APISite("test", "wikipedia")
أنشئ كائن صفحة:
page = pywikibot.Page(site, 'test')
افحص إن كانت موجود بتشغيل:
page.exists()
ينبغي أن يظهر
VERBOSE:pywiki:Found 1 wikipedia:test processes running, including this one. Out[5]: True
قم بإظهار النص على الصفحة:
page.text
قم بتغيير نص الصفحة في الكائن:
page.text = 'Hello world'
احفظ الصفحة على الويكي:
page.save()
ينبغي أن يكون الرد:
Page [[Test]] saved
INFO:pywiki:Page [[Test]] saved
مفكرة بايثون 3 التفاعلية تسمح بتشغيل سطور كثيرة معًا. النص أعلاه يمكنه وضعه في صندوق نصي واحد ثم تشغيله
import pywikibot
site = pywikibot.Site('test', 'wikipedia')
page = pywikibot.Page(site, 'test')
page.text = 'Hello world!'
page.save()
سجل جلسة بايثون التفاعلية يمكن حفظ أو تحميله ليكون مرجعًا مستقبليًا.
الوصول إلى توثيق عبر الإنترنت في PAWS
يمكن إيجاد توثيق باي ويكي بوت في https://doc.wikimedia.org/pywikibot/. ومصدره من سلاسل التوثيق، والتي يمكن تحميلها في مفكرة بايثون 3 التفاعلية باستخدام دالة مدمجة في بايثون help().
على سبيل المثال، للبحث عن وسائط دوال الحفظ أعلاه، قم بتشغيل إما:
help(page.save)
أو
help(pywikibot.Page.save)
تعديل نصوص باي ويكي البرمجية
مكتبة باي ويكي بوت والنصوص البرمجية محملة في /srv/paws، وللقراءة فقط. مكتبة باي ويكي بوت المثبتة لا يمكن تعديلها في PAWS.
يمكن تعديل النصوص البرمجية بعد نسخها إلى صفحة PAWS الرئيسية الخاصة بك.
على سبيل المثال، لتشغيل "checkimages.py" معدل:
- في الطرفية، قم بإدخال
cp /srv/paws/pwb/scripts/checkimages.py ~
- في المتصفح، اذهب إلى صفحة PAWS الرئيسية ثم اضغط على الملف
checkimages.py
. - في المتصفح، يمكنك تعديل الملف. قم بتعديل النص البرمجي -- على سبيل المثال، بعد نص
start = time.time()
مباشرةً في سطر 1775، قم بإضافة سطر جديد 1776 يقوم بطباعة اسمك:print("MYNAME's version.")
- في واجهة التعديل، استخدم قائمة File ثم اضغط Save لحفظ تعديلاتك.
- في الطرفية، قم بإدخال
pwb.py ~/checkimages.py -simulate
(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
- لو كنت بحاجة لمساعدة في إعداد بوت Pywikibot الخاص بك، يرجى زيارة قناة #pywikibot على آي آر سي تواصل أو القائمة البريدية pywikibot@.