Вікіпедія:Боти

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Скорочення
ВП:БОТИ
ВП:БОТ

Бот Вікіпедії — це програма, яка з-під свого облікового запису виконує редагування, які нераціонально робити вручну. Як правило, працюють з Вікіпедією на рівні API MediaWiki. Бюрократи можуть надавати і скасовувати статус бота, використовуючи сторінку керування правами користувача.

Заявки на права бота[ред. код]

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

Для заповнення заявки слід вказати

  • ім'я бота,
  • відповідального ботовласника
  • мету створення бота
  • технічні подробиці

Докладніше

Подати заявку на права бота
New request

Заявки/Requests for bot flag[ред. код]

Архів заявок

Користувач:Andriy.vBot[ред. код]

Користувач:SOMBot[ред. код]

Два чи три роки не працювала робостася. Звідки з'явився такий поспіх, що заявку треба закривати за кілька годин? Хто взагалі може встигнути писати зауваження за кілька годин в неділю (коли деякі вікіпедисти їдуть в інше місто, на дачу тощо). Я власне пишучи це ще навіть не ознайомився з заявкою. Це просто дивно й не дуже в дусі Вікімедіа. --ᛒᚨᛊᛖ (ⰑⰁⰃ) 01:54, 11 квітня 2016 (UTC)
Підтримую, хотів би побачити тестові редагування в Вікіпедії (редагувань 50-100, оскільки алгоритм не надто простий). --RLuts (talk) 07:30, 11 квітня 2016 (UTC)
Також дуже хотів би побачити тестові редагування, по-перше, щоб перевірити коректність функціонування (зокрема, що бот розуміє перенаправлення, розрізняє службові списки й хронологічні статті, не додаватиме шаблону двічі тощо), по-друге, щоб перевірити сумісність з форматом РобоСтасі (тобто що не доведеться робити нові шаблони й нові категорії) — NickK (обг.) 09:03, 11 квітня 2016 (UTC)
@Sergento: будь ласка, зробіть тестові редагування спочатку. --Максим Підліснюк (обговорення) 09:14, 11 квітня 2016 (UTC)

Розумію ваше бажання подлубатися у правках. І я вважаю, що лізти в алгоритм, аби штучно обмежувати кількість правок до 50-100 (за яким критерієм? когось шось вдовольнить, а когось ні), контрпродуктивним. Я кілька місяців відпрацьовував і оптимізовував його функціонал не для того, аби тепер там сокирою шось правити. Усе можна побачити у Вікіцитатах. Як бот додає шаблони, як їх прибирає і т.і. Там цей алгоритм працює вже понад місяць. Бот розставляє шаблони «Ізольована стаття», з якими працювала РобоСтася, і ці шаблони самі розкидають статті по відповідних категоріях. Я назви та конкатенацію мнемонік під стандарт РобоСтасі підганяв і навіть у Вікіцитатах зробив такий самий шаблон «Ізольована стаття», як у Вікі, аби після роботи у ВЦ не треба було нічого ще раз налагоджувати. Якщо є конкретні питання щодо його роботи, чи алгоритмів, будь ласка питайте, я спробую конкретно відповісти. Ну але якщо хтось мої відповіді і приклад роботи алгоритму у ВЦ не вважає достатньо задовільними, то ок, він просто продовжить працювати собі у ВЦ. Ну або якийсь адекватний спосіб тестування (поганяти місяць у ВЦ?). --Sergento 09:32, 11 квітня 2016 (UTC)

Є деякі речі, які я на Вікіцитатах перевірити не можу. Щодо сумісності з форматом РобоСтасі зрозуміло, на Вікіцитатах наче проблем не бачу. Щодо решти, то не наполягаю неодмінно на тестових редагуваннях, якби обговорення не закрили так швидко, я б їх зробив питаннями:
  1. Бот розуміє перенаправлення? Якщо на сторінці є перенаправлення, та якийсь текст, що робитиме в цьому випадку бот? РобоСтася розпізнавала їх як перенаправлення та генерувала окремий список на Тулсервері, чи може твій бот робити те саме (не на тулсервері, а десь в іншому місці)?
  2. Бот розрізняє службові списки ({{Службовий список}}) й хронологічні списки ({{Хронологічний список}}), посилання з них та на них не враховуються?
  3. Бот не додаватиме шаблону двічі, тобто він розуміє всі перенаправлення на кшталт {{Сирота}}, {{Безвихідна стаття}} та правильно їх обробляє?
Дякую — NickK (обг.) 10:29, 11 квітня 2016 (UTC)
  1. Бот розуміє перенаправлення, якщо їх розуміє рушій вікі, бо інформацію про те, чи є сторінка перенаправленням, чи не є, отримує прямо з БД (див. запит нижче). Опрацьовує всі подібні сторінки так само як і решту (так виявилось менш ресурсоємно), проте відкидає їх на етапі вирахування потужності компонент зв'язності (тобто, якщо 5 сторінок, і 3 перенаправлення, які одні на одних посилаються, то всі вони увійдуть до однієї компоненти зв'язності, але позначатимуться тільки ті 5 сторінок, які не є перенаправленнями і їм стаивитиметься параметром «кластер5», бо у компоненті є тільки 5 сторінок, які не є перенаправленнями). Щодо окремого списку не зрозумів, що туди писали. Але думаю, що це можна зробити.
  2. Бот отримує списки сторінок із категорій Категорія:Усі хронологічні списки, Категорія:Багатозначні терміни та Категорія:Списки статей для координації робіт і не враховує посилання, які ведуть з цих сторінок (тобто, самі дизамбіги, хронологічні списки і службові списки, якщо вони в основному просторі, можуть бути ізольованими).
  3. Бот наразі не додає позначок типу {{Безвихідна стаття}}, себто не додає інфо про те, чи є стаття тупиковою, чи ні. Щодо {{Сирота}}, то бот прибирає наявні у тексті статті шаблони таким регулярним виразом:
    p.Content = Regex.Replace(p.Content, "{{(Ізольована стаття|Сирота)[^}]*}}(\n|)", "");
    
    тобто і сам шаблон, і це перенаправлення. Якщо треба прибрати, то так і залишає, а якщо треба змінити (кластер), то після прибирання додає новий шаблон із потрібним параметром. --Sergento 13:22, 11 квітня 2016 (UTC)
    А ти не хочеш хоча б p.Content = Regex.Replace(p.Content, "{{\s*([Tt]emplate|[Шш]аблон)\:{0,1}\s*([Іі]зольована[ _]стаття|[Сс]ирота)[^}]*}}\s*(\n|)", ""); ? (я не знаю чи не треба в сі-шарпі екранувати екрануючий символ як в Яві, це вже сам дивись, ну й може без частини про префікс простору назв, бо так точно рідко хто вживає, а от написати з малої букви замість великої і понаставляти пробілів це не щось рідкісне). Чи в тебе воно там і так не чутливе до регістру? Тоді тільки про пробіли. --ᛒᚨᛊᛖ (ⰑⰁⰃ) 22:27, 11 квітня 2016 (UTC)
  1. У РобоСтасі був список перенаправлень, на сторінці яких є якийсь інший текст, крім власне REDIRECT
  2. Тоді наче добре (коли буде пошук статей без посилань, треба буде дивитися і посилання на ці класи статей)
  3. Ага, було б добре тоді на майбутнє додати функцію визначення статей без посилань (все одно аналіз тих самих графів): для Вікіцитат, може, це й некритично, але у Вікіпедії кожна стаття повинна мати посилання. На всяк випадок є ще перенаправлення {{Orphan}}, але воно наче не використовується
Дякую за відповіді — NickK (обг.) 14:17, 11 квітня 2016 (UTC)
Щодо списку - то тут треба писати інший алгоритм, бо цей отримує зміст сторінки тільки у тому випадку, якщо на ній треба додати/видалити/змінити шаблон (так менш ресурсоємно, інакше б довелося щоразу отримувати зміст усіх мільйона (разом з перенаправленнями) сторінок основного простору). Щодо інших двох пунктів, то тут я би теж зробив окремий алгоритм, а не накручував щось до цього: визначити, чи є зі сторінки посилання можна простим запитом ще на рівні БД, без того, аби шось мудровано аналізувати. Заодно й не треба буде думати, що робити з дизамбігами, хроносписками, аби ніде нічого не зламати. Я це поки не робив, бо це не так цікаво з точки зору математики і споживання ресурсів. Але це не має становити проблем дописати. Про ще одне перенаправлення - візьму до уваги, дякую. І питання про тестовий(перший) запуск залишається відкритим --Sergento 14:35, 11 квітня 2016 (UTC)
Здається, РобоСтася визначала як перетин множини сторінок, з яких є посилання, і сторінок, які є перенаправленнями. Це ж можна зробити? Таке зазвичай легко виправляється руками, і функціонал для цих аномальних сторінок фактично не знадобиться. Щодо того, чи є зі сторінки посилання, то запит до БД не підійде, бо можуть бути: а) червоні посилання, б) посилання на хронологічні статті чи списки, які не враховуються, а якщо в тебе і так є база даних посилань, це наче не має бути чимось заскладним. Щодо першого запуску, то з РобоСтасею був варіант з чітко визначеною датою пуску, щоб у цей день і ти був онлайн (і в разі чого міг зупинити чи підпиляти щось), і кілька пар очей дивилося, чи все пішло як слід — NickK (обг.) 14:49, 11 квітня 2016 (UTC)
Ну шукати тупикові мені здається дійсно треба окремо. Навіщо тут якісь аналізи графів? Тут також треба дофіга даних отримувати якщо робити аж з врахуванням службових списків (які імхо взагалі з основного простору в простори вікіпроектів треба попереносити та й по всьому, менше проблем і жодних втрат), але задача виглядає досить тривіально (ну тобто для початку це статті з взагалі 0 посилань, точніше сторінки, бо такі не рахуються рушієм за статті; потім це статті без лінків вже на основний простір назв, далі ті, які лінки мають, але лише червоні, й далі ті, які мають сині, але лише на службові списки. Власне більшість з цього скоріше за все можна на чистому SQL писати, можливо останнє вимагатиме додаткової обробки двох масивів даних іншою мовою програмування). --ᛒᚨᛊᛖ (ⰑⰁⰃ) 22:27, 11 квітня 2016 (UTC)
Наскільки я розумію, РобоСтася мала три класи статей:
  • дизамбіги (взагалі не враховуються)
  • хронологічні статті та службові списки. Посилання Хрон-Стаття чи Хрон-Хрон не враховуються, посилання Стаття-Хрон враховуються лише для самих хроностатей і службових списків (перевірка на те, чи є вони самі ізольованими)
  • решта статей. Статті, на яких нема дійсних посилань з того кластера, в якому Головна стаття, є ізольованими, а статті, з яких нема дійсних посилань, є безвихідними
@Sergento: Не знаю, чи в тебе такий самий підхід, але в підході РобоСтасі, здається, статті без посилань визначалися порівняно просто — NickK (обг.) 18:10, 13 квітня 2016 (UTC)
А що запустити на деякий час не вийде? Я не пам'ятаю, щоб колись комусь надавався прапорець бота без тестових правок. Звідки нам знати чи не підключились ви помилково до БД Вікіцитат, а редагування будете проводити у Вікіпедії? Або ж чи не забули поміняти простори назв? Або ж ще щось інше--RLuts (talk) 10:32, 11 квітня 2016 (UTC)
щодо помилкового підключення: бот спочатку логіниться у вікіпроект (ВЦ, або ВП, задається адресою проекту), а при встановленні підключення до Labs перемикається на ту БД, назва якої повертається з АПІ Вікі (значення атрибуту wikiid в результаті запиту [1]). Приблизно виглядає все так:
WikiSite site = new WikiSite("uk.wikipedia.org"); // в конструкторі тут відбувається з'єднання з АПІ за вказаною адресою, і в нього запитуються параметри вікі, в т.ч. wikiid
site.LogIn("UserName", "Passwd");
using (MySql.Data.MySqlClient.MySqlConnection dbConn = new MySql.Data.MySqlClient.MySqlConnection(/* тут повно всяких параметрів для встановлення з'єднання з БД на Labs */))
{
    dbConn.Open();
    dbConn.ChangeDatabase(site.WikiId + "_p"); // для роботи встановлюється назва БД, отримана через АПІ. тому помилка виключена
    
    // далі запит до бд
    string linksRequest =
       "select p.page_id, REPLACE(CONVERT(p.page_title USING utf8),'_',' '), ifnull(r.rd_from,0) as redir, ifnull(l_to.to_id,0) as link_id " +
       "from page p " +
       "left join redirect r on r.rd_from = p.page_id " +
       "left join ( " +
       "select pl.pl_from, pp.page_id as to_id, pp.page_namespace as to_ns " +
       "from pagelinks pl " +
       "join page pp on pl.pl_title = pp.page_title and pl.pl_namespace = pp.page_namespace " +
       ") as l_to on l_to.pl_from = p.page_id and l_to.to_ns = 0 " +
       "where p.page_namespace = 0";

    // а далі запис отриманих із запиту даних у пам'ять і їх опрацювання
}
Тому куди залогіниться, з тим він працюватиме. Працює він, як видно, тільки з основним простором (власне, це, що вимагалося, насккільки я розумію), тому міняти простори не треба. Із запуском "на деякий час" є нюанс. Я може не зовсім розумію, що мається на увазі. Востаннє, коли я запускав цей алгоритм для УкрВікі, він назбирав понад 27 тис. статей, в яких треба оновити інформацію щодо їх ізольованості. Якщо оновити це неповністю, то тоді буде важче відслідкувати (а місцями може й неможливо), що бот помітив, а що пропустив. Де помилка в алгоритмі, а де спрацювало оце обмеження. Якщо мова йде про те, щоби спершу все оновити кілька разів, замість одразу ставити на розклад, то ок. Перше ПОВНЕ оновлення може зайняти кількадесят годин, залежно від швидкості роботи всього-всього, тому із самого початку однаково треба вручну. Зате тоді буде справді видно, де щось не враховане. Мова про це йде, чи про щось інше? --Sergento 13:22, 11 квітня 2016 (UTC)
А ти не можеш кудись вивести ті 27 тисяч якимось списком (чи на вікі сторінку, чи статичний хтмл файл в публічне місце твого бота на лабсі, наприклад) замість записувати? Це трішки роботи по створенню того виводу, але не щось надто складне, наче. Тоді вже, коли всі бажаючі то пороздивляються, записувати. --ᛒᚨᛊᛖ (ⰑⰁⰃ) 22:27, 11 квітня 2016 (UTC)
Ось лінк на Лабс на таблицю із потрібними кластерами у статтях, де інфо про ізольованість має бути оновлена: [2] --Sergento 13:46, 12 квітня 2016 (UTC)
@Sergento: У тебе щось не так з дизамбігами. Пішов з кінця і познаходив:
Тощо. Здається, ти не робиш винятків для дизамбігів, а було б варто — NickK (обг.) 17:40, 13 квітня 2016 (UTC)
Сторінка Ястржембський не належить до категорії Категорія:Багатозначні терміни, хоча по суті і є дизамбігом. Очевидно, чогось бракує у використаному там шаблоні {{DisambigF}} (додавання в категорію? але це просто виправити). Щодо Ювента (значення), то це дизамбіг, на який посилається стаття Ювента (компанія), яка сама є «сиротою0». Оскільки самі дизамбіги, хронологічні списки і службові списки, якщо вони в основному просторі, теж можуть бути визначені як ізольовані, то Ювента (значення) отримала «сирота1». Наскільки я зрозумів, РобоСтася так і працювала і з токи зору алгоритму помилок нема. (я визначаю дизамбіги з категорії, тому що простіше отримати список статей із однієї категорії, аніж список сторінок, куди включаються бозна скільки шаблонів. Дизамбіги мають бути просто правильно категоризовані). В принципі ми не мусимо робити зараз точнісінько як робила РобоСтася. Якщо справді дизамбіги не мають позчатися ізольованими, то це можна влаштувати. --Sergento 19:31, 13 квітня 2016 (UTC)
@Sergento: Цікавий підхід. В принципі, я можу уявити корисний ізольований дизамбіг (наприклад, неоднозначність між кількома перейменованими населеними пунктами, який допомагає при пошуку). З іншого боку, ізольований дизамбіг з синіми посиланнями — це зло, бо ним читач не зможе вирішити неоднозначність. Чи можна подивитися якусь статистику, щоб зрозуміти, який з цих двох типів домінує? — NickK (обг.) 19:57, 13 квітня 2016 (UTC)
Нмд, ізольований дизамбіг не має користі, бо на нього майже так само складно натрапити, як на ізольовану статтю, а тому ним майже неможливо скористатися. щоби подивитися, що слово має інше значення, користувач має звідкілясь дізнатися, що вони взагалі існують. А дізнатися він може, якщо у статті є посилання на дизамбіг (ну ще випадково може якось натрапить, через пошук, чи що). Тому я не дуже розумію критерії, за якими ти хочеш отримати статистику. Можеш пояснити детальніше, будь ласка? --Sergento 20:37, 13 квітня 2016 (UTC)
Ну мені от трапився ізольований дизамбіг Вулиця 40 років Жовтня. Потрібний? Та наче так, для тих, хто шукатиме через пошук щось перейменоване. Ізольований? Так, і особливих шансів змінити це немає, хіба шляхом рекомунізації, щоб ці вулиці поперейменовували назад на честь Жовтня. А от щодо критерію, то формалізувати це дещо складно. Може, ти зможеш згенерувати просто список ізольованих дизамбігів? А там уже можна буде подивитися і зрозуміти, чи то взагалі потрібно — NickK (обг.) 23:44, 13 квітня 2016 (UTC)
Ось тут [3] є список ізольованих дизамбігів. Наразі таких набралося 4843 штук. --Sergento 14:53, 21 квітня 2016 (UTC)
Зараз основним методом позначення дизамбігів є не категорії, а магічне слово __DISAMBIG__ яке присутнє в шаблонах дизамбігів. Зокрема Ястржембський правильно опрацьовується рушієм, я це бачу наочно, бо в мене підсвічено посилання з CSS-класом mw-disambig. Це магічне слово опрацьовується й виводить оці всякі примочки, типу CSS-класу, розширення Disambiguator. Там за лінком є як з ним працювати через API і в якій таблиці БД його записи. --ᛒᚨᛊᛖ (ⰑⰁⰃ) 20:14, 13 квітня 2016 (UTC)
Щойно, правда, зафіксив {{Список однофамільців}} щоб магічне слово працювало й треба буде перевірити чи в інших чудних шаблонах дизамбігів це ок. Але, імхо, краще все таки відштовхуватись від цього механізму. --ᛒᚨᛊᛖ (ⰑⰁⰃ) 20:30, 13 квітня 2016 (UTC)
Розширення не скасовує категоризацію. (ну і, для хроносписків і службових магічних слів поки нема. чесно, мені простіше, коли всі ці речі за одним принципом відсікаються) Я подивлюся, однак, що можна з цим зробити. --Sergento 20:37, 13 квітня 2016 (UTC)

@Максим Підліснюк: я, звісно, не знаю, як працюють бюрократи, але якщо після обговорення з'являються очевидні запитання, то, нмд, це має бути достатнім приводом, аби почати розрізняти слова «оперативні» і «миттєві». Це не перший випадок подібного поспіху. Нмд, така гіпероперативність може стати зайвим натяком на змову адмінів, чи ще там що, у очах деяких тутешніх персонажів. Негарно. Неприємно. Дякую за розуміння. --Sergento 09:32, 11 квітня 2016 (UTC)

  • Потенційно корисна інфо: недавно шаблони дизамбігів були кардинально перероблені, принаймні один з них перестав ідентифікувати статті як дизамбіги. Існувало так - десь неділю, якщо не помиляюсь, і лише після звернення до користувача це було виправлено (1 шаблон, інші - не знаю). Якщо користувач одну помилку зробив, то можливо там ще якісь помилки були, які я не помітив?? -- Green Zero обг 09:06, 14 квітня 2016 (UTC)

Заявки на позбавлення прав бота[ред. код]

Архів заявок

Див. також[ред. код]