Википедия:Форум ботоводов

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Боты

Правила · Рекомендации · Запросы · FAQ · Орден · Форум

Новые статьи проекта Музыка[]

Всем доброго времени суток! У нас тут Нирванабот накрылся (с 20-го числа не работает). Теперь не обновляется страница Проект:Музыка/Новые статьи и, видимо, и другие связанные с ботом. Владелец бота, Нирванчик с ноября неактивен, что там случилось с ботом - неизвестно. Нужна помощь с обновлением списка.--Deltahead (обс.) 11:28, 23 декабря 2018 (UTC)

«Открытость кода — Полная (GPLv3)» и «Сервер запуска — Сервер участника DR» оставляют надежду. — Vort (обс.) 12:09, 23 декабря 2018 (UTC)
Я попробую посмотреть. --DR (обс.) 15:25, 23 декабря 2018 (UTC)
Написал пока автору в скайп, описал проблему подробнее, пока ждём. --DR (обс.) 15:40, 23 декабря 2018 (UTC)
  • Спасибо большое! Deltahead (обс.) 10:39, 24 декабря 2018 (UTC)
Откликнуся. Сейчас в отпуске, после нового года, как только вернётся - сразу займётся проблемой. Предположительно сломался механизм авторизации. --DR (обс.) 08:02, 27 декабря 2018 (UTC)
  • А пока не починят, как жить?) UPD: и реально ли будет потом выгрузить список новых статей по тематике, созданных с 19 декабря и далее? Deltahead (обс.) 09:57, 27 декабря 2018 (UTC)
  • Может, та же проблема, что и у меня была — требование удлинения пароля для учётной записи бота? — Vort (обс.) 10:36, 27 декабря 2018 (UTC)

Итог[]

Бот исправлен и работает. --DR (обс.) 17:35, 6 января 2019 (UTC)

  • Благодарю за содействие! Deltahead (обс.) 19:13, 6 января 2019 (UTC)

mwparserfromhell[]

В процессе обсуждения заявки на статус бота мне посоветовали использовать mwparserfromhell на Python. С ним возникла проблема: он плохо взаимодействует с русскими символами. Насколько я понял, из-за функции bytes, использующейся в mwparserfromhell. Что делать? Well very well (обс.) 05:12, 5 декабря 2018 (UTC)

  • Вот участок моего кода:
text=mwparserfromhell.parse(u"текст")
textnew=[]
templates=text.filter_templates()
for template in templates:
        '''index=text.index(str(template))'''
        textnew.append([0, text[:index]])
        text=mwparserfromhell.parse(text[index+len(template):])
        if template.name.lower() in [u"не переведено 5", u"нп5", u"iw",u"нп4", u"ut4", u"не переведено 4", u"не переведено 3", u"нп3"]:
                temp=[template.name]
                for i in range(4):
                        try:
                                temp.append(template.get(i+1).value)
                        except:
                                temp.append("")
                textnew.append(temp)
        else:
                textnew.append([0, template])
textnew.append([0, text])

Строчка с ошибкой выделена тройными кавычками. Текст ошибки после этой строки:

File "/data/project/shared/pywikipedia/core/mwparserfromhell/string_mixin.py", line 61, in __str__

   return bytes(self.__unicode__())

UnicodeEncodeError: 'ascii' codec can't encode characters in position 2-6: ordinal not in range(128) <type 'exceptions.UnicodeEncodeError'>

Well very well (обс.) 14:49, 15 декабря 2018 (UTC)

  • Обычно, для таких вопросов используется гугл. Погуглил за вас --- [1]. - DZ - 11:52, 16 декабря 2018 (UTC)
    • Спасибо! Буду менять код mwparserfromhell. Well very well (обс.) 03:04, 18 декабря 2018 (UTC)
      • Нет, это не годится. Файлы mwparserfromhell для меня read-only. А пароль на Toolforge у root я не знаю. Well very well (обс.) 10:47, 24 декабря 2018 (UTC)
        • Разве в python нельзя указать собственный путь к модулю? — Vort (обс.) 14:01, 25 декабря 2018 (UTC)
          • Можно, спасибо! Well very well (обс.) 15:31, 25 декабря 2018 (UTC)
            • Вот возник ещё вопрос: я ведь собираюсь выложить код моего бота в Github. Тогда как мне сделать, просто добавить папку с изменнёным mwparserfromhell в репозиторий? Не защищен ли он какими-нибудь лицензиями, запрещающими делать это? Well very well (обс.) 09:37, 5 января 2019 (UTC)
              • Можно выложить своего бота под той же лицензией, что и mwparserfromhell — MIT. Или можно не морочиться с лицензией и выложить не саму изменённую библиотеку, а патч к ней (или скрипт для патчинга). — Vort (обс.) 09:47, 5 января 2019 (UTC)
                • Да там просто надо строчку поменять... Ладно, напишу в readme. Спасибо! Well very well (обс.) 09:57, 5 января 2019 (UTC)
  • После исправления этой ошибки возникла такая ошибка:

WARNING: /mnt/nfs/labstore-secondary-tools-project/interbot/pywikibot-core/scripts/userscripts/mw/string_mixin.py:76: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal

 return self.__unicode__() == other

Traceback (most recent call last):

 File "pwb.py", line 257, in <module>
   if not main():
 File "pwb.py", line 250, in main
   run_python_file(filename, [filename] + args, argvu, file_package)
 File "pwb.py", line 119, in run_python_file
   main_mod.__dict__)
 File "./scripts/userscripts/interbot.py", line 103, in <module>
   main(pywikibot.Page(pywikibot.Site(), u"Участник:Well very well/Черновик"))
 File "./scripts/userscripts/interbot.py", line 24, in main
   index=text.index(str(template))
 File "/mnt/nfs/labstore-secondary-tools-project/interbot/pywikibot-core/scripts/userscripts/mw/wikicode.py", line 310, in index
   raise ValueError(obj)

ValueError: {{книга | автор = Béla Bollobás | doi = 10.1007/978-1-4612-0619-4 | isbn = 0-387-98488-7 | место = New York | mr = 1633290 | страницы = 6 | издательство = Springer-Verlag | серия = Graduate Texts in Mathematics | заглавие = Modern Graph Theory | url = https://books.google.com/books?id=SbZKSZ-1qrwC&pg=PA6 | том = 184 | год = 1998}} <type 'exceptions.ValueError'>

Мое исправление ошибки в mwparserfromhell было таким:

return bytes(self.__unicode__()) ==> return self.__unicode__().encode("utf-8")

Well very well (обс.) 10:28, 5 января 2019 (UTC)