Wikipedia Diskussion:Pywikibot

Letzter Kommentar: vor 2 Monaten von Rjh in Abschnitt Botflag bei Änderungen

Download-Adresse

Bearbeiten

Wo kann man den Bot runterladen? Unter der angegebenen Adresse [1] finde ich nichts. Στε Ψ 20:55, 1. Sep. 2009 (CEST)Beantworten

Hat sich mittlerweiler erledigt. Στε Ψ 20:20, 17. Nov. 2009 (CET)Beantworten

Rewrite-Branch

Bearbeiten

Benutzer:Xqt schrieb bezüglich des Rewrite-Branch: „Es ist ohnehin vorgesehen, daß alle Botbetreiber zu dieser Version, die vollständig die API-Schnittstelle unterstützt, wechseln sollten.“ Wie ausgereift ist der Rewrite-Branch – sollte ich als Botbetreiber (auf einer anderssprachigen Wikipedia) bereits jetzt wechseln oder lieber erst zu einem späteren Zeitpunkt? add_text.py und pagefromfile.py habe ich auf die Schnelle im Rewrite-Branch nicht gefunden, kommen diese Scripts noch oder gibt es einen Ersatz dafür? Danke für nähere Info! --UV 22:27, 16. Jan. 2011 (CET)Beantworten

Für die Scripte, die bereits existieren, kann man getrost wechseln, sofern man auf aktuellen MW-Umgebungen arbeitet; bei allen Wikimedia-Projekten ist das der Fall. Die Scripts werden nach und nach portiert. Momentan versuche ich, beide Zweige einigermaßen auf gleichem Stand zu halten. Aber es ist beabsichtigt, Neuimplementierungen nur noch im Rewrite-Branch vorzunehmen. Alle TW-Übersetzungen bis gestern habe ich mit Ausnahme der Interwiki-Meldungen in die Trunk-Version übernommen.  @xqt 06:27, 19. Jan. 2011 (CET)Beantworten
Danke für die Information, dann werde ich mal den Rewrite-Branch ausprobieren. --UV 20:55, 19. Jan. 2011 (CET)Beantworten

Pywikibot auf Raspberry Pi

Bearbeiten

Habe den Pywikibot mal auf einem meiner Raspberrys mit Debian Wheezy getestet, erste Erfahrungen sind, was die Perfomance betrifft etwas langsam beim ausführen der Python scripts, aber ansonsten lauffähig mit Python 2.7.3. Hat jemand Erfahrungen mit dem Rpi als Bot? --vy 73 de Ptolusque Amateurfunk | 04:29, 21. Sep. 2014 (CEST)Beantworten

Probleme beim Betrieb des bots

Bearbeiten

Ich habe mal ein Testskript versucht, um mich in das Bot-Framework einzuarbeiten:

import pywikibot

site = pywikibot.Site()
page = pywikibot.Page(site, u"Benutzer:Crosby Newton")

text = page.text

page.text = ""
page.save()

Liefert bei mir folgende Fehlermeldung:

exception UnsupportedOperation('fileno',) while fixing up sys.stdout and sys.stderr
Traceback (most recent call last):
  File "C:\Users\...\bot.py", line 9, in <module>
    page.save()
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\tools.py", line 730, in wrapper
    return obj(*__args, **__kw)
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\page.py", line 1036, in save
    **kwargs)
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\page.py", line 1047, in _save
    watch=watchval, bot=botflag, **kwargs)
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\site.py", line 1036, in callee
    self.login(False)
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\site.py", line 1673, in login
    if loginMan.login(retry=True):
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\login.py", line 202, in login
    password=True)
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\bot.py", line 502, in input
    data = ui.input(question, password)
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\userinterfaces\terminal_interface_base.py", line 207, in input
    self.output(question + ' ')
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\userinterfaces\terminal_interface_base.py", line 186, in output
    self._print(text, targetStream)
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\userinterfaces\terminal_interface_base.py", line 127, in _print
    self.printColorized(text, targetStream)
  File "C:\Python34\lib\site-packages\pywikibot-2.0b3-py3.4.egg\pywikibot\userinterfaces\terminal_interface_win32.py", line 91, in printColorized
    targetStream.write(text.encode(self.encoding, 'replace'))
  File "C:\Python34\lib\idlelib\PyShell.py", line 1339, in write
    raise TypeError('must be str, not ' + type(s).__name__)
TypeError: must be str, not bytes

Aus meiner Sicht unverständlich ist, dass der Bot erst Probleme macht, wenn ich versuche - nach Anleitung (!) - zu speichern und dann meint, dass der Inhalt in byte-Form und nicht als String vorliegt. Jemand eine Idee!? --Crosby Newton (Diskussion) 15:42, 21. Feb. 2015 (CET)Beantworten

@Crosby Newton: Die Unterstützung von Python 3.x ist noch recht neu in pywikibot, und es wird auch noch immer daran gearbeitet. Es könnte sein, dass dies im Zusammenhang mit Windows noch nicht funktioniert. Könntest du es mal mit Python 2.7 probieren? Grüße sitic (Diskussion) 18:56, 21. Feb. 2015 (CET)Beantworten

Ja, daran lag es, d. h. mit Python 3 ist das Tool nicht zu betreiben :( --Crosby Newton (Diskussion) 23:57, 21. Feb. 2015 (CET)Beantworten

Bitte mal version.py ausführen, damit Deine Konfiguation angezeigt wird. Das hilft, um den Fehler einzukreisen. Fehlermeldungen nach Möglichkeit auf phabricator einstellen.  @xqt 20:30, 22. Feb. 2015 (CET)Beantworten
@Crosby Newton: Ich weiß nicht ob du der Autor von phab:T91921 bist. Ansonsten ist dort ein ähnlicher Fehler beschrieben. Ich habe auf gerrit:195086 ein Patch hochgeladen welcher diesen Fehler beheben könnte also sofern möglich wäre es nett wenn du ihn mal ausprobieren könntest. Allerdings verwundert es mich das erst jetzt der Fehler auftritt. Es gibt einige die pywikibot mit Windows betreiben und keiner von denen hat Python 3 benutzt? Benutzt du eigentlich auch IDLE, weil eventuell stellt das Unicode stdout etc. zur Verfügung (der letzte Eintrag im Stack sieht danach aus). — xZise [disk] 15:38, 8. Mär. 2015 (CET)Beantworten

Erfahrungen bei einem Wiki auf dem eigenen Rechner?

Bearbeiten

Hi, ich möchte aktuell erst einmal auf einem lokal installierten Wiki üben, d. h. ich habe mir eine Wiki-Testumgebung (auf XAMPP) installiert. Hat jemand Erfahrungen, wie dann die user-config und die families-Datei aussehen muss?! --Crosby Newton (Diskussion) 00:01, 22. Feb. 2015 (CET)Beantworten

UnknownFamily: Family TEST does not exist

Das „TEST“-Wiki liegt bei mir im Ordner „mediawiki“ innerhalb von htdocs. Irgendeine Idee, was ich da machen kann!? --Crosby Newton (Diskussion) 00:15, 22. Feb. 2015 (CET)Beantworten

Gelöst: Ich habe das Problem jetzt für mich gelöst, indem ich die family-Datei direkt in das Verzeichnis der Bibliothek in meinem Python27-Ordner kopiert habe. Ich erhalte jetzt folgende Fehlermeldung - aber zumindest kann die Software etwas mit der family-Datei anfangen:

WARNING: Http response status 404
WARNING: Non-JSON response received from server TEST:de; the server may be down.
WARNING: Waiting 5 seconds before retrying.

Jemand eine Idee??? --Crosby Newton (Diskussion) 16:26, 22. Feb. 2015 (CET)Beantworten

Handbuch gelesen, generate_user_files.py und generate_family_file.py gestartet? Die family.py gehört nicht ins Python-Verzeichnis, das funktioniert nicht. Melde dich dann einfach wieder, wenn Du mit der Anleitung nicht weiterkommst. Gruß  @xqt 20:23, 22. Feb. 2015 (CET)Beantworten

@xqt. Danke für die zügigige Antwort! Ich hatte den Eindruck, dass es hier keine Community rundum das Tool gibt. Auf Meta scheinen Anfragen seit Jahren nicht beantwortet zu werden und das Tool scheint in der Handhabung nicht einfach bzw. die Dokumentation scheint mir lückenhaft und wenn es allein die Info ist, dass das Tool unter Python3 nicht lauffähig ist. --Crosby Newton (Diskussion) 21:48, 22. Feb. 2015 (CET)Beantworten

@Crosby Newton: Die beste Möglichkeit ist eigentlich ins irc:pywikibot zu springen, sofern du Englisch gut genug kannst. Ein anderes Problem ist, das die Varianten „core“ und „compat“ gibt. Und teilweise ist die Dokumentation spezifisch für eine Version, was natürlich das ganze relativ unübersichtlich macht. — xZise [disk] 15:49, 8. Mär. 2015 (CET)Beantworten
Ich habe relativ viel mit Python-Software zu tun, nur hier hatte ich das erste Mal richtig Probleme, weil die Dokumentation m. E. nicht gut ist. Mir hat die Mailingliste sehr geholfen, sonst wäre es wohl nicht gegangen. Der Bot läuft, jetzt fehlt mir (momentan) die Zeit, ihn zu testen und damit zu arbeiten. Die Grundfunktion ist gut. --Crosby Newton (Diskussion) 16:55, 8. Mär. 2015 (CET)Beantworten

Inbetriebnahme

Bearbeiten

Also ich habe dann mal das ausprobiert und bekomme prombt folgende Fehlermeldung:

UnknownFamily: Family TEXT does not exist

Ich habe die user-config.py-Datei automatisch erzeugt und unten die Zeile angefügt. --Crosby Newton (Diskussion) 22:05, 22. Feb. 2015 (CET)Beantworten

Noch eine Verständnisfrage hinterher:

1.) Ich habe einen Ordner mit meinem Bot im Python-Arbeitsordner, da hatte ich das Framework entpackt, so dass da jetzt auch der Ordner core drin ist. Die user-config.py-Datei liegt im core-Ordner. In diesen Ordnern muss dann auch die family-Datei rein. 2.) Ich habe dann mein Python-Verzeichnis - ich habe dich so verstanden, dass ich da nicht heran muss. 3.) Ich habe mein htdocs-Verzeichnis, da ist keine Python-Datei drin. Habe ich da irgendwo einen Fehler drin!? --Crosby Newton (Diskussion) 22:29, 22. Feb. 2015 (CET)Beantworten

Habe es zum Laufen bringen können mit Hilfe der Mailingliste. Werde schauen, wie ich mit der Software zurecht komme. --Crosby Newton (Diskussion) 01:26, 28. Feb. 2015 (CET)Beantworten

Lösung: Bei mir liegt jetzt die Datei user-config.py im Verzeichnis mit dem Pywikibot-Modul und hat folgenden Inhalt:

mylang='de'
family = 'NameDesWikis'
usernames['NameDesWikis']['de']=u'BenutzernameDesBots'
console_encoding = 'utf-8'
transliteration_target = None

Meine Familiendatei hat folgenden Inhalt:

# -*- coding: utf-8 -*-                                                         
"""                                                                             
This family file was auto-generated by ...                          
"""                                                                                                                                                     
from pywikibot import family                                                    
                                                                                
class Family(family.Family):                                                    
    def __init__(self):                                                         
        family.Family.__init__(self)                                            
        self.name = 'NameDesWikis'                                                      
        self.langs = {                                                          
            'de': 'localhost',                                               
        }                                                                       
                                                                                
                                                                                
                                                                                
    def scriptpath(self, code):                                                 
        return {                                                                
            'de': '/AllesNach-htdocs-UndVorEuremMediaWiki-Verzeichnis/mediawiki',                                                     
        }[code]                                                                 
                                                                                
    def version(self, code):                                                    
        return {                                                                
            'de': u'1.24.2',                                                 
        }[code]

Die Platzhalter müsstet ihr ersetzen. Wie gesagt, ich betreibe ein Testwiki mittels XAMPP; gefühlt ging ein Testlauf direkt in der Wikipedia schneller und unkomplizierter, wollte ich aber nicht. --Crosby Newton (Diskussion) 19:12, 4. Mai 2015 (CEST)Beantworten

Zeitverzögerung

Bearbeiten

Wenn ich den Bot bei mir laufen lasse, dann pausiert er immer mal wieder. Für mich wäre die Frage, warum das gemacht wird? Ich denke, um zu verhindern, dass der Bot als Spambot genutzt werden kann. Gibt es eine einfache Option, diese Zeitverzögerung im Testbetrieb herauszunehmen, d. h. ist es eine Bot-eigene Einstellung oder gibt es dafür (auch) einen technischen Grund??? --Crosby Newton (Diskussion) 11:13, 29. Mär. 2015 (CEST)Beantworten

Der Grund ist, daß die Botgeschwindigkeit in allen Projekten gedrosselt sein muss. Bei schnelleren Arbeitsgeschwindigkeiten riskiert man eine Sperre. Mit der Option -pt:0 kann man die Drosselung abschalten. Auf eigenes Risiko.  @xqt 16:19, 2. Mai 2015 (CEST)Beantworten

put_throttle = 0 in die user-config.py-Datei funzt auch und habe ich gemacht. Im Testbetrieb ist die Verzögerung m. E. störend. --Crosby Newton (Diskussion) 16:37, 2. Mai 2015 (CEST)Beantworten

Was meinst Du denn mit Testbetrieb?  @xqt 18:25, 2. Mai 2015 (CEST)Beantworten
Testbetrieb = Betrieb auf einem Testwiki, d. h. nicht in der regulären Wikipedia. --Crosby Newton (Diskussion) 15:40, 4. Mai 2015 (CEST)Beantworten
Alles klar. Du kennst auch die Option -simulate ? Guess what it does ;)  @xqt 17:05, 4. Mai 2015 (CEST)Beantworten

Autsch. (Ich finde die Software ausgesprochen schlecht dokumentiert oder aber ich war bislang zu dumm mich zu orientieren. Ich verstehe auch nicht, warum ich mir die Software nicht mittels pip installieren kann.) Hast du die Info wg. Hackathon auf der Mailingliste gesehen!? --Crosby Newton (Diskussion) 19:01, 4. Mai 2015 (CEST)Beantworten

Hilfe gesucht: Portal:Dänemark/Überarbeitungswürdige_Artikel

Bearbeiten

Da gibt es auf der Seite "Portal:Dänemark/Überarbeitungswürdige_Artikel" eine Übersicht "Defekter Commons-Link" - dort sind hunderte von Artikeln eingetragen. Ich hab mal willkürlich zehn davon angesehen und bin überall auf die entsprechende Commons-Seite gekommen.

Folgende Frage: ist da der entsprechende Bot schon lange nicht mehr gelaufen (und wer ist dann zuständig, dass er mal läuft?) - oder ist da ein ganz anderer Fehler gemeint, den ich nicht interpretieren kann (vielleicht kann das System die dänischen Buchstaben nicht erkennen?) - oder ist was ganz anderes?

Jedenfalls kann ich nichts reparieren, weil es nichts zu reparieren gibt.

Kann hier jemand helfen? Danke und Gruß --Mef.ellingen (Diskussion) 22:20, 1. Feb. 2016 (CET)Beantworten

Botflag bei Änderungen

Bearbeiten

Hallo. Ich haben einen pyWikiBot (ChemoBot) geschrieben. Dieser hat auch das Bot Flag und läuft auch. Nun habe ich den Hinweis bekommen, dass der Bot bei seinen Änderungen das BotFlag nicht setzt und damit seine Änderungen nicht von der Beobachtungsliste gefiltert werden können. Die Dokumentation zur save Funktion sagt. bot (bool | None) – if True, mark this edit as made by a bot (default: True if user has bot status, False if not). Da der Bot wie schon gesagt, das BotFlag hat bin ich davon ausgegangen, dass ich den Parameter nicht in der save Funktion ergänzen muss. Nach einem Nutzerhinweis habe ich das BotFlag sogar noch mal manuell in der save Funktion gesetzt. page.save(summary="ChemoBot: Ergänze ...", minor=False, bot=True). Auch das führt (so weit ich das erkennen kann) nicht zum Setzen des BotFlags bei Änderungen. Die Funktion ist exakt so wie hier geschrieben bei der letzten Änderung in Diazanaphthaline aufgerufen worden. Mache ich noch irgendwas falsch oder gibt es eine "schwarze Magie" die ich noch tun muss, um die Änderungen des Bots als Bot-Änderungen zu kennzeichnen oder ist das ein Bug in pyWikiBot ? Grüße, --Rjh (Diskussion) 09:26, 28. Aug. 2024 (CEST)Beantworten

Das "B" siehst du nur in der Beobachtungsliste. technischer Hintergrund: Vergleiche die Datenbanktabellen "revision" und "recentchanges" im Datenbankschema, nur "recentchanges" hat das Feld "rc_bot", "revision" hat das nicht. --Wurgl (Diskussion) 10:39, 28. Aug. 2024 (CEST)Beantworten
Zum pyWikiBot selbst kann ich nix sagen, APPERbot läuft mit PHP (und PHP weil APPER PHP benutzt hat, ich musste das damals auch erst lernen). --Wurgl (Diskussion) 10:56, 28. Aug. 2024 (CEST)Beantworten
Danke, damit verstehe ich den technischen Hintergrund, warum man das Flag nicht in der Versionshistorie der Seite sieht. Also wieder was gelernt. Aber (wie schon auf der anderen Seite geschrieben) löst es mein eigentliches Problem nicht. Mein Bot setzt bei Änderungen das BotFlag nicht, obwohl das a) automatisch erfolgen sollte und ich es b) sogar nochmal händisch gesetzt habe. Und nun beschweren sich die Autoren das ihre Beobachtungsliste voll ist und sie meine Botänderungen nicht rausfiltern können (weil ja BotFlag nicht gesetzt wird) und ich weiß nicht, was ich ändern soll.Rjh (Diskussion) 12:05, 28. Aug. 2024 (CEST)Beantworten