[Wikiro-l] PyWikipediaBot - configurare eronată

Iulian Dogariu iulianu at gmail.com
Wed Mar 1 12:57:09 UTC 2006


Salut Cornel,

Retrimit mesajul tău către lista publică de discuţii Wikipedia în
româneşte, poate cineva este mai inspirat decît mine :)


On 20/02/06, Cornel Ilie <cornel.c.ilie at gmail.com> wrote:
Servus Iulian,

Uite că am formulat problema în format sursă wiki (poate chiar
foloseşte ca exemplu la pagina Bot de la ro.wikipedia,
http://ro.wikipedia.org/wiki/Wikipedia:Bot) şi am ataşat'o.  Am ales
soluţia asta ca să fiu sigur că nu se întâmplă "tăieri" la linii din
cauză de word wrap.

Scuze şi de întârziere, dar durează ceva cu dual boot (sistemul de
lucru este FreeBSD, sistemul de "legătură cu lumea" e un GNU/Linux
Slackware din motive de winmodem).

Dacă am uitat informaţii pe dinafară, spune-mi te rog şi imediat vin
cu ele.  Din păcate online stau cam prea puţin (tot speram să scap
de dial up dar văd că prea puţine şanse încă, altfel m'aş fi făcut
remarcat şi eu prin articole la ro.wikipedia).

Ca fapt divers, am aflat din wikipedia că există Liceu Catolic în
Deva :)

Mulţumesc frumos pentru orice ajutor (orice idee e binevenită).

După experienţa asta la cât am sucit wikipedia pe o parte şi pe alta
poate am să mă specializez în articolele de ajutor :)

Cornel


- --

                     __|__
              --C-o-r-(_)-n-e-l--

        10.0 times 0.1 is hardly ever 1.0.
          Air is water with holes in it.


Content-Type: text/html;
 name="Cofigurare_Eronata_PyWikipediaBot.wiki"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
 filename="Cofigurare_Eronata_PyWikipediaBot.wiki"

<!-- -*- mode: wikipedia; coding: latin2; -*- -->

=== Scop ===

Intenţia este de a folosi scriptul '''pagefromfile.py''' cu un fişier
care să creeze în [http://www.rofug.ro/mediawiki/index.php Wikipedia
ROFUG], o serie de pagini dedicate porturilor româneşti (menţinători,
programatori, etc.).  Fişierul sursă (care va crea paginile cu
ajutorul robotului) este/va fi creat de un script (merge mai repede),
eventual apoi manual corectat, adăugat, actualizat. 
'''[[PyWikiepediaBot]]''' ar putea uşura mult munca de început.


=== Sistem de test ===

*  OS:
:: '''[[FreeBSD]] 5.4-RELEASE'''

*  instalate din porturi:
:: '''[[Apache|Apache 2.0.53]]'''
:: '''[[PHP|PHP 5.0.3]]'''
:: '''[[MySQL|MySQL 4.1.10a]]'''
:: '''[[Python|Python 2.4,1]]'''

*  în directorul propriu (<tt>~/cornel/www</tt>)
:: '''[[MediaWiki|MediaWiki 1.5.5]]''' (<tt>~/cornel/www/mediawiki</tt>)
:: '''[[PyWikipediaBot|PyWikipediaBot snapshot-20060209.tar.gz]]'''
(<tt>~/cornel/www/mediawiki/pywikipedia</tt>)


=== Formularea problemei ===

Am erori la rularea scriptului '''login.py''' (astfel că nu pot aplica
'''pagefromfile.py''').


==== Varianta 1 - output ====

Încercând scriptul '''login.py''' obţin:


----
 $ python login.py
 Traceback (most recent call last):
   File "login.py", line 45, in ?
     import wikipedia, config
   File "/usr/home/cornel/www/mediawiki/pywikipedia/wikipedia.py",
line 117, in ?
     import config, mediawiki_messages, login
   File "/usr/home/cornel/www/mediawiki/pywikipedia/config.py", line 202, in ?
     execfile(_filename)
   File "user-config.py", line 4, in ?
     usernames['ROFUGpedia']['en'] = 'ROFUGbot'
 KeyError: 'ROFUGpedia'
 $ _
----


==== Varianta 1 - configurare ====

Fişierul '''user-config.py''' este:


----
 mylang = 'en'     # user language
 family = 'rofug'  # ./families/rofug_family.py
 usernames['ROFUGpedia']['en'] = 'ROFUGbot'
 #             =1=        =2=       =3=
 #
 # =1=  $wgSitename from LocalSettings.php
 #
 # =2=  mylang value, from above
 #
 # =3=  user created for this purpouse
 #      user that is part of 'bot' group
 #      not 'bureauracrat', not 'sysop'
 #      see Special pages > User rights management
-----


Fişierul '''families/rofug_family.py''' este:


----
 # -*- coding: utf-8  -*-
 import family

 # The official ROFUG Wiki.

 class Family(family.Family):
     def __init__(self):
         family.Family.__init__(self)
         self.name = 'rofug' # this file is rofug_family.py

         self.langs = {
             'en':'silentwing.net', # put the hostname here.
         }

         # Most namespaces are inherited from family.Family.

         self.namespaces[4] = {
             '_default': u'ROFUGpedia',
         }
         self.namespaces[5] = {
             '_default': u'ROFUGpedia Talk',
         }

     def version(self, code):
         return "1.5.5" # MediaWiki version

     def path(self, code):
         return '/~cornel/mediawiki/index.php'
         # hostname + this path => Main Page URL
-----

<small>după [http://meta.wikimedia.org/wiki/Pywikipedia_bot_on_non-Wikimedia_projects
Pywikipedia bot on non-Wikimedia projects]</small>

==== Varianta 1 - output (variaţiune) ====

Am obţinut următoarea eroare:


----
 $ python login.py
 WARNING: Configuration variable username not known. Misspelled?
 Checked for running processes. 1 processes currently running,
including the current process.
 Traceback (most recent call last):
   File "login.py", line 210, in ?
     main()
   File "login.py", line 205, in main
     loginMan = LoginManager(password, sysop = sysop)
   File "login.py", line 79, in __init__
     raise wikipedia.NoUsername(u'ERROR: Username for %s:%s is
undefined.\nIf you have an account for that site, please add such a
line to user-config.py:\n\nusernames[\'%s\'][\'%s\'] = \'myUsername\''
% (self.site.family.name, self.site.lang, self.site.family.name,
self.site.lang))
 wikipedia.NoUsername: ERROR: Username for rofug:en is undefined.
 If you have an account for that site, please add such a line to user-config.py:

 usernames['rofug']['en'] = 'myUsername'
 $ _
-----


==== Varianta 1 - configurare (variaţiune) ====

dacă în fişierul '''user-config.py''' schimb aşa:


----
 #usernames['ROFUGpedia']['en'] = 'ROFUGbot'
 username = 'ROFUGbot'
-----


==== Varianta 2 - output ====

Am următorul rezultat:


----
 $ python login.py
 WARNING: Configuration variable username not known. Misspelled?
 Checked for running processes. 1 processes currently running,
including the current process.
 Traceback (most recent call last):
   File "login.py", line 45, in ?
     import wikipedia, config
   File "/usr/home/cornel/www/mediawiki/pywikipedia/wikipedia.py",
line 2763, in ?
     getSite()
   File "/usr/home/cornel/www/mediawiki/pywikipedia/wikipedia.py",
line 2702, in getSite
     _sites[key] = Site(code=code, fam=fam, user=user)
   File "/usr/home/cornel/www/mediawiki/pywikipedia/wikipedia.py",
line 2074, in __init__
     self.family = Family(fam)
   File "/usr/home/cornel/www/mediawiki/pywikipedia/wikipedia.py",
line 2062, in Family
     return myfamily.Family()
   File "families/rofug_family.py", line 10, in __init__
     namespaces = {  4: u'ROFUGpedia',
   File "/usr/home/cornel/www/mediawiki/pywikipedia/family.py", line
1265, in _addlang
     self.langs[code] = location
 AttributeError: Family instance has no attribute 'langs'
-----


==== Varianta 2 - configurare ====

Pentru altă variantă de perechi de fişiere '''user-config.py''' şi
'''families/rofug_family.py'''.
Cu '''user-config.py''', ca în '''varianta 1 variaţiune''':


----
 mylang = 'en'     # user language
 family = 'rofug'  # ./families/rofug_family.py
 username = 'ROFUGbot'
 #minthrottle = 4
 #maxthrottle = 20
 #put_throttle = 20
-----


şi '''families/rofug_family.py''':


----
 # -*- coding: utf-8  -*-
 import family

 class Family(family.Family):
      name = 'ROFUGpedia'

      def __init__(self):
          self._addlang('en',
                          location = 'silentwing',
                          namespaces = {  4: u'ROFUGpedia',
                                          5: u'ROFUGpedia talk'  })

      def path(self, code):
          return '/~cornel/mediawiki/index.php'
-----

<small>după [http://apfelwiki.de/wiki/Main/Pywikipediabot ApfelWiki
despre PyWikipediaBot] (în germană)</small>

=== Observaţii ===

==== LocalSettings.php ====

Fişierul '''LocalSettings.php''' conţine:


----
 $wgSitename = "ROFUGpedia";
-----


==== Preferinţe (Preferences) ====

La utilizatorul '''ROFUGbot''' am ''skin'' '''monobook''', iar
''limba'' este '''en'''(gleză).  Ca '''WikiSysop''' (înainte de a
încerca scripturile) am mers la ''Special pages'' > ''User rights
management'' şi am făcut '''ROFUGbot''' '''''Member of: bot
(group)'''''.

Cunoştinţele mele de [[Python]] sunt cam sumare (ca să nu zic
inexistente, dar iată o bună oportunitate de a începe).  Am şi nişte
motive (cam obscure) să suspectez chiar instalarea [[Python]], dar am
schimbat în fişierul '''user-config.py''':


----
 family = 'wikipedia'
 usernames['wikipedia']['en'] = 'whatevername'
-----


şi atunci obţin:


----
 $ python login.py
 Checked for running processes. 1 processes currently running,
including the current process.
 Password for user whatever on wikipedia:en: pass <- introdus de mine
 Logging in to wikipedia:en as whatever
 Getting page [[Wikipedia:Bots]]
 [Errno socket error] (8, 'hostname nor servname provided, or not known')
 WARNING: Could not load
'http://en.wikipedia.org/w/index.php?title=Wikipedia%3ABots&action=edit'.
Maybe the server or your connection is down. Retrying in 1 minutes...
 ^C <- ctrl + c, cancel, apăsat de mine să întrerup procesul
 Traceback (most recent call last):
   File "login.py", line 210, in ?
     main()
   File "login.py", line 206, in main
     loginMan.login()
   File "login.py", line 157, in login
     if not self.botAllowed():
   File "login.py", line 89, in botAllowed
     text = pl.get()
   File "/usr/home/cornel/www/mediawiki/pywikipedia/wikipedia.py",
line 374, in get
     self._contents, self._isWatched, self.editRestriction =
self.getEditPage(get_redirect = get_redirect, throttle = throttle,
sysop = sysop)
   File "/usr/home/cornel/www/mediawiki/pywikipedia/wikipedia.py",
line 416, in getEditPage
     text = self.site().getUrl(path, sysop = sysop)
   File "/usr/home/cornel/www/mediawiki/pywikipedia/wikipedia.py",
line 2177, in getUrl
     time.sleep(retry_idle_time * 60)
 KeyboardInterrupt
 $ _
-----


Asta mi risipeşte suspectarea neîntemeiată a instalării Python.


More information about the Wikiro-l mailing list