Interested Article - NirvanaBot


17 декабря 2023 - Бот работает нестабильно с 1 декабря . В чем дело, пока не выяснил, подозрение на сломы сервиса petscan.

О боте

Кратко о себе
Этот бот не будет обновлять страницы, помеченные шаблоном nobots или bots
300 000+
Для этого участника Java является родным языком.

Главный запуск :

Статус бота
Состояние: остановлен
Версия бота: 1.19
Стартовал: 2024-02-27 18:01:10 UTC
Остановился: 2024-02-27 21:45:17 UTC
Время работы: 3 h 44 m 7 s
Настроек всего: 957
Проверено: 957
Списков обработано: 945
Обновлено: 231
Ошибок: 5

Утренний запуск :

Статус бота
Состояние: остановлен
Версия бота: 1.19
Стартовал: 2024-02-27 06:01:11 UTC
Остановился: 2024-02-27 06:14:11 UTC
Время работы: 0 h 13 m 0 s
Настроек всего: 377
Проверено: 377
Списков обработано: 36
Обновлено: 21
Ошибок: 0
Подробный отчёт за сутки
Орденоносный бот Википедии — Volgar 08:53, 8 ноября 2011 (UTC)
Звезда бота. Вручил: → borodun ¿¿¿ 15:15, 31 декабря 2013 (UTC)

Этот бот — потомок бота NewPagesWikiBot , работавшего в 2008—2011 годах под аккаунтом ClaymoreBot , портированный на язык Java , и имеющий много улучшений и исправлений. NirvanaBot обновляет в порталах и проектах такие секции, как списки новых статей, новых категорий, шаблонов, иллюстраций. Полный список видов секций см. ниже:

Список

Элемент списка может содержать: название статьи, автор, дата создания, изображение (найденное в статье), размер статьи, обсуждение (вики-ссылка).

Архив

При обновлении, удалённые из списка статьи могут складываться в архив ( пример ). Архив может разбиваться по годам/кварталам ( , ). В архив могут добавляться заголовки ( пример , параметры ).

Порталы и проекты

Дополнительные задачи

  1. Архивы . Бот может проставить заголовки и подзаголовки в существующих архивах новых статей, расставить нумерацию (решетки, или в html-формате), рассортировать список статей по дате. Оставляйте заявку на странице обсуждения.
  2. Статистика . Обновление статистики. Читайте детали в Участник:NirvanaBot/Статистика

Режим работы

Бот запускается в автоматическом режиме 1 раз в сутки (или правильнее сказать 2 раза в сутки). Обычное время запуска 20:00 MSK. С недавних пор был добавлен ещё один запуск в 08:00 MSK для обновления некоторых, самых «горячих» списков.

Бот обрабатывает все секции, подключившие в настройках шаблон User:NirvanaBot/Новые статьи , или старый шаблон User:ClaymoreBot/Новые статьи .

Настройки

У бота есть глобальные настройки (общие для всех) и персональные для каждого обновляемого списка (см. документацию ). В персональных настройках можно переопределить любые глобальные настройки. Посмотреть примеры настроек можно здесь .

Как использовать

Для подключения бота в портал, нужно создать подстраницу наподобие [[Портал:Жабы/Новые статьи/Параметры]] , в которую подставить шаблон {{ User:NirvanaBot/Новые статьи }}. Какие параметры подставлять в шаблон и примеры настроек смотрите в документации к шаблону. Бот сам обнаружит потом эти настройки, и по ним сделает обновление.

Алгоритм

Старый алгоритм (быстрый режим : нет)

Такой режим я включаю в отдельных списках, когда сервис Petscan тупит, делает сбои, не тянет (на тяжелых проектах - География, История, и т.п.).

  1. Бот собирает список настроек, т.е. страниц которые включили шаблон: {{ User:NirvanaBot/Новые статьи }}
  2. По каждому порталу в списке делает следующие шаги
    1. Извлекает настройки портала
    2. Используя сервис (который работает на ) получает списки новых статей по всем заданным категориям, и объединяет их в один большой список A
    3. Используя сервис CatScan2 Petscan получает списки новых статей по всем категориям из параметра "игнорировать" и объединяет их в один большой список B
    4. Из списка A выкидывает все элементы списка B, и все у которых автор совпадает с указанным в параметре "игнорировать авторов", и ещё при необходимости выкидываются удалённые статьи ака "красные ссылки" (если параметр "удаленные статьи = удалять")
    5. Сортирует список A по дате: в начало новые, в конец старые
    6. Обрезает список A до указанного количества статей, т.е. если список слишком длинный, то все лишние отбрасываются
    7. Извлекает старый список X
    8. Добавляет из старого списка X нехватающие элементы в A, (если размер A меньше указанного количества статей)
    9. Оставшиеся элементы из X временно сохраняет, если есть архив, или отбрасывает, если архива нет
    10. Записывает список A в Википедию
    11. Обновляет архив если он есть, дописав туда оставшееся в X элементы

Особенности. CatScan2 Petscan собирает статьи не только указанных категорий но и всех вложенных категорий до указанной глубины (6 по умолчанию).

Обновлённый алгоритм (быстрый режим : да)

Всё точно также как в старом алгоритме, только пункты 2, 3 и частично 4 выполняются за одну операцию обращения к сервису самим сервисом CatScan2 Petscan. Т.е. шлём в сервис список нужных категорий, список игнорируемых категорий, получаем готовый список статей, нам остаётся только сократить длину до нужного количества и сформировать результат.

Описание на примере

Упрощенное описание на примере фруктового сада

Возьмём к примеру фруктовый сад, фруктовый сад - это Википедия. В саду под деревьями лежат опавшие фрукты - груши, яблоки, сливы. Допустим, по 3 каждого вида. Бот должен собрать в саду спелые яблоки и груши, у нас есть корзина, в которой вмещаеются 2 фрукта. Причём яблоко1, груша1, слива1 - гнилые; яблоко3, груша3, слива3 - незрелые, т.д. зелёные. В настройках проекта будут заданы такие значения:

  • | категории = Яблоки, Груши
  • | игнорировать = Зеленые, Гнилые
  • | элементов = 2
  1. Бот получит задание: категории Яблоки и Груши, игнорировать Зеленые (неспелые) и Гнилые
  2. Бот получает список Яблоки: яблоко1, яблоко2, яблоко3. Потом бот получает список Груши: груша1, груша2, груша3. Потом они объединяются в один список A: яблоко1, яблоко2, яблоко3, груша1, груша2, груша3.
  3. Бот получает список Зеленые: яблоко3, груша3, слива3. Бот получает список Гнилые яблоко1, груша1, слива1. Объединяет всё в список B: яблоко3, груша3, слива3, яблоко1, груша1, слива1.
  4. Из A выкидываем то что в B, т.е. гнилые яблоко3 и груша3 и также зеленые яблоко1 и груша1 выкидываются из списка. У нас остаётся яблоко2 и груша2.
  5. Сортируем по порядку (сначала самые спелые): яблоко2, груша2 (яблоко2 более спелое чем груша2).
  6. У нас надо собрать 2 элемента, мы их и берём. Если бы было 3, то 3-й бы откинули.
  7. Берём корзину со старыми фруктами.
  8. Кладём туда яблоко2 и груша2, а старых 2 вынимаем.
  9. Если есть погреб (архив), кладём туда старых 2 фрукта, вынятые из корзины, если нет - выкидываем.
  10. Отдаём корзину заказчику

Технические детали

Бот написан на языке Java на базе легковесного вики-фреймворка ( ). Исходный код доступен по лицензии GNU GPL на сайте . Для сборки бота используется JDK версии от 1.8.0 и несколько свободных библиотек: Apache log4j , Apache Commons (lang, collections), . Для запуска бота используется JRE 8 версии или выше, распакованный distribution-архив бота, и консоль. Бот работает под ОС Windows. Совместим с Linux, но под ним не тестировался. Среднее время работы бота: 6-8 часов. Частота обновлений: 1-2 правки в минуту. Бот очень сильно зависит от сервиса .

Технические ограничения

Максимальный размер списка 5000 элементов. Максимальное количество часов — 8928 (1 год). Ограничение установлено в теле бота.

Функции

Бот полностью реализует поведение ClaymoreBot /NewPagesWikiBot последней версии (от 10 декабря 2010).

Дополнительные возможности
  1. исправлен ряд багов, найденных в ClaymoreBot
  2. содержательный комментарий к правкам
  3. совместим с параллельными ручными правками и правками других аналогичных ботов
  4. архивы с заголовками
  5. разбивание архивов по годам/сезонам/кварталам
  6. поддержка шаблонов {{ nobots }} и {{ bots }} чтобы временно отключить бота
  7. сообщение об ошибках в настройках на страницу обсуждения (пока не включено)
  8. поддержка нескольких категорий и параметра игнорировать для списков список новых статей с изображениями , -//- в карточке , список наблюдения (ClaymoreBot обрабатывает только одну категорию для этих типов)
  9. обработка красных ссылок, т.е. удалённых статей (их можно оставлять, помечать, или удалять) (удаленные статьи всегда убираются из списка)
  10. подробный ежедневный отчёт
  11. разбивание списка на 2 колонки (функция удалена за ненадобностью)
  12. пропускание несвободных изображений (их нельзя размещать на страницах порталов)
  13. интеллектуальный поиск новых статей с изображениями в карточке (боту можно указать в каких параметрах определенных шаблонов могут находиться изображения, см. Портал:Нумизматика и бонистика/Новые статьи с иллюстрациями/Параметры )
  14. автоматически создаваемая ссылка на обсуждение в списках "к удалению", "к улучшению" и т.п.
  15. ежесуточный отчёт

Планы

  • Подстановка subst в архиве вместо шаблона (идёт анализ)
  • Улучшенное обновление списков ( без перестановок некоторых статей вниз)

См. также

Другие боты этого автора

Похожие боты

  • ClaymoreBot - этот бот ушел на покой
  • AeroBot - это был временный заместитель NirvanaBot
  • KrBot
  • Участник:AdamantBot - начинающий бот, обновляет только списки новых статей, обновляет по тем же настройкам, что и NirvanaBot; постоянный заместитель NirvanaBot.

Другие боты

Тестирование

Источник —

Same as NirvanaBot