Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Створення власного вікібота

with one comment

Якось я вирішив таки завести собі вікі-бота, бо маю певні ідеї на рахунок автоматизації перекладів. Окрім того, круто зробити програму, з доступом до “основних знань людства”. Це звісно не робить її розумнішою, але дає такий шанс.

До речі, з роботами що тільки читають мороки набагато менше, бо їх не треба реєструвати…

І от недавно руки дойшли:

  svn co http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia pywikipedia

Спочатку думав підтестувати бота на CybWiki, там мені по пальцях не надають, бо я адміністратор 🙂 . Перед тим як створити файл конфігурації, треба створити профіль для CybWiki.

  cd pywikipedia/family
  vim README-family.txt
  cp README-family.txt cybwiki_family.py

Там багато інструкцій, і треба просто пройтись по файлу, виконуючи їх.

Наприклад треба дізнатись назви просторів імен. Їх список – за адресою

  http://cybportal.univ.kiev.ua/w/api.php?action=query&
meta=siteinfo&siprop=general|namespaces|namespacealiases|statistics

Далі переходимо до конфігурації користувача:

  cd ..
  vim user-config.py

Моя конфігурація така:

  family = 'cybwiki'
  mylang = 'uk'
  usernames['cybwiki']['uk'] = u'bunyk'

Тепер спробуємо залогінитись:

  python login.py

І потестувавши бота:

  python basic.py -new

я вияснив, що pywikipediabot глючний:

  UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

  'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

ПРИМІТКА: Я дурень… RTFM!

Згадавши про api.php, я вияснив, що написати свого read-only бота з нуля не так вже і складно.

Документація тут.

Наприклад отримати код сторінки PAGENAME можна звичайним GET запитом:

  http://uk.wikipedia.org/w/index.php?title=PAGENAME&action=raw

Якщо сторінка PAGENAME не існує нас повідомлять кодом 404.

Окрім цього, я хотів отримувати історію редагувань, щоб дізнаватись яким чином користувачі можуть бути пов’язаними сторінками які вони спільно редагують.

  http://uk.wikipedia.org/w/api.php?action=query&prop=revisions&titles=FAT32&
rvprop=timestamp|user|size&format=jsonfm&rvlimit=100

Отож, список можливих завдань для мого тількичитаючого вікібота:

  • Отримувати текст обраної сторінки
  • Отримувати категорії обраної сторінки
  • Отримувати сторінки обраної категорії
    • Надрукувати дерево категорій
  • Отримувати інтервікі обраної сторінки
    • Здійснювати інтервікі-переклад
    • Здійснити те ж для шаблонів, і написати гуйовину що допоможе прискорити переклад хоч би разів в два.
  • Отримувати список авторів сторінки
  • Отримувати список сторінок що редагував певний користувач
    • Знаходити список всіх “співавторів” користувача, сортувати за кількістю спільних сторінок

Деякі результати вже отримав:

Список сотні користувачів, які редагували найбільше тих же сторінок що і я (впорядковані за кількістю спільних статтей):

Bunyk – 943, Albedo – 194, VictorAnyakin – 132, Gutsul – 118, Дядько Ігор – 118, Deineka – 109, NickK – 109, Ilya – 107, Erud – 96, AS – 89,Білецький В.С. – 82,

A1 – 72, Tomahiv – 70, Friend – 68, SamOdin – 68, Yakudza – 67, Ahonc – 58, Drundia – 58, Movses – 55, Loveless – 55, Yakiv Gluck – 52,Олюсь – 49, Alex K – 47, Pavlo Shevelo – 47, Tigga – 46, Kamelot – 45, DixonD – 41, Leon II – 39, Leonst – 37, Birczanin – 37, Amakuha – 37,Krystofer – 37, Raider – 37, AnatolyPm – 36, Perohanych – 36, Ilyaroz – 36, YarikUkraine – 35, Gvozdet – 35, Pavlo Chemist – 33, Артем В. Коновалов – 33, Володимир Ф – 31, Ink – 31, Igor Yalovecky – 31, Володимир Груша – 31, Johnny – 31, Oleksii0 – 30, Holigor – 30,IgorTurzh – 30, Turzh – 30, Когутяк Зенко – 30, See-Saw Itch – 29, Lewkurdydyk – 29, Helgi – 27, OlegMarchuk – 27, Dim Grits – 26, Olvin – 25, Борис Пряха – 24, Гаврило – 24, OlegB – 24, Minia – 24, Mr.Rosewater – 24, Вальдимар – 24, Bryndza – 23, Іванко1 – 23,Thevolodymyr – 23, Rh – 23, Гриць – 23, Dimant – 22, Maverick – 22, Microcell – 22, Amatorov – 21, Oleh Kernytskyi – 21, IhorLviv – 21,Romanbibwiss – 20, Rar – 19, Alex Blokha – 19, Galkovsky – 19, Nikkolo – 19, Silin2005 – 18, Vprypin – 18, Maksym Ye. – 18, Danbst – 18,Kusluj – 18, Andrijko Z. – 17, Секіші – 17, О. Погодін – 16, Kvandr – 16, 日本地理 – 16, Darvin – 16, Летюча голландка – 16, Олександр Кравчук – 15, Olexa Yur – 15, StSasha – 15, StripedM – 15, Olegvdv68 – 15, Bodyk13 – 15, P.Y.Python – 15, Oys – 15, Бахтін – 15, Adept – 14, Texnik – 14.

Варто правда зауважити, що перетин зацікавлень ще не означає дружнє ставлення. Ті редагування могли бути війнами за право важливих математичних задач мати свої статті. Хоча проти математики в вікі виступають в основному люди, які вписують туди сотні нікому невідомих футболістів.

Advertisements

Written by bunyk

Листопад 19, 2010 at 16:30

Оприлюднено в Кодерство, Павутина

Tagged with

Одна відповідь

Subscribe to comments with RSS.

  1. […] недавно я написав, що pywikipediabot […]


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: