Manual talk:Pywikipediabot/Archive 1

From mediawiki.org
The following discussion has been transferred from Meta-Wiki.
Any user names refer to users of that site, who are not necessarily users of MediaWiki.org (even if they share the same username).

CVS diff

You recommend using "cvs diff". Surely you want to recommend "cvs diff -u"? This gives a much more robust diff format than the default (submitting patches in a format other than unidiff is a common newbie dev mistake). Subversion uses that format by default, and is nicer than CVS in lots of other ways, so you might want to move to that instead :) Hairy Dude 08:25, 7 March 2006 (UTC)Reply

pywikipediabot is a framework for which most of the users have installed CVS tools, and these users are not using CVS for anything else. It is bad enough that we required normal users to use developers tools to use the programs, migrating to subversion will not happen any time soon! You are completely right that -u should be used to generate patches against cvs. Rob Hooft 12:01, 9 April 2006 (UTC)Reply

CVS instructions

I think the CVS instructions need updating. They don't seem to work- did the CVS repository move to another address? --129.21.121.171 18:33, 16 May 2006 (UTC)Reply

Ok, it seems to be working now. I guess the CVS server did move. --129.21.121.171 04:05, 23 May 2006 (UTC)Reply

Unicode problem

I am writing a bot to run on Hindi Wikipedia. I am using python wikimedia framework. I am getting an error, "UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: unexpected code byte" when executing the following code,

       f = codecs.open('hi-towns.csv', 'r', config.textfile_encoding)
       x = f.read().decode('utf8')

Any help will be greatly appreciated. Thanks, Ganeshk 03:54, 16 July 2006 (UTC)Reply

This was solved. - Ganeshk 15:15, 16 July 2006 (UTC)Reply

Not updated?

TortoiseCVS does not seem to work with Pywikipedia, and the link http://sourceforge.net/cvs/?group_id=93107 seems to be dead. - Soulkeeper 19:12, 1 September 2006 (UTC)Reply

python-xml

On another list it mentioned that the python-xml libraries were needed as well. With Fedora Linux I got that using 'yum install PyXML'. Other systems probably vary. 143.52.82.248 13:57, 1 November 2006 (UTC)Reply

doc included in framework

I extracted the documentation included in wkipedia.py with this :

import wikipedia
import codecs

manuel = file("manuel.txt", "w")
doc = wikipedia.__doc__

for ligne in doc:
    manuel.write(ligne)



Maybe one can include this somewhere ?


Library to get and put pages on a MediaWiki.

Contents of the library (objects and functions to be used outside, situation
late August 2004)

Classes:
Page: A MediaWiki page
    __init__              : Page(Site, Title) - the page with title Title on wikimedia site Site
    title                 : The name of the page, in a form suitable for an interwiki link
    urlname               : The name of the page, in a form suitable for a URL
    titleWithoutNamespace : The name of the page, with the namespace part removed
    section               : The section of the page (the part of the name after '#')
    sectionFreeTitle      : The name without the section part
    aslink                : The name of the page in the form [[Title]] or [[lang:Title]]
    site                  : The wiki this page is in
    encoding              : The encoding of the page
    isAutoTitle           : If the title is a well known, auto-translatable title
    autoFormat            : Returns (dictName, value), where value can be a year, date, etc.,
                            and dictName is 'YearBC', 'December', etc.
    isCategory            : True if the page is a category, false otherwise
    isImage               : True if the page is an image, false otherwise

    get (*)               : The text of the page
    exists (*)            : True if the page actually exists, false otherwise
    isRedirectPage (*)    : True if the page is a redirect, false otherwise
    isEmpty (*)           : True if the page has 4 characters or less content, not
                            counting interwiki and category links
    interwiki (*)         : The interwiki links from the page (list of Pages)
    categories (*)        : The categories the page is in (list of Pages)
    linkedPages (*)       : The normal pages linked from the page (list of Pages)
    imagelinks (*)        : The pictures on the page (list of Pages)
    templates (*)         : All templates referenced on the page (list of strings)
    getRedirectTarget (*) : The page the page redirects to
    isDisambig (*)        : True if the page is a disambiguation page
    getReferences         : List of pages linking to the page
    namespace             : The namespace in which the page is
    permalink (*)         : The url of the permalink of the current version
    move                  : Move the page to another title

    put(newtext)          : Saves the page
    delete                : Deletes the page (requires being logged in)

    (*) : This loads the page if it has not been loaded before; permalink might
          even reload it if it has been loaded before

Site: a MediaWiki site
    messages              : There are new messages on the site
    forceLogin(): Does not continue until the user has logged in to the site
    getUrl(): Retrieve an URL from the site

    Special pages:
        Dynamic pages:
            allpages(): Special:Allpages
            newpages(): Special:Newpages
            longpages(): Special:Longpages
            shortpages(): Special:Shortpages
            categories(): Special:Categories

        Cached pages:
            deadendpages(): Special:Deadendpages
            ancientpages(): Special:Ancientpages
            lonelypages(): Special:Lonelypages
            uncategorizedcategories(): Special:Uncategorizedcategories
            uncategorizedpages(): Special:Uncategorizedpages
            unusedcategories(): Special:Unusuedcategories

Other functions:
getall(): Load pages via Special:Export
setAction(text): Use 'text' instead of "Wikipedia python library" in
    editsummaries
argHandler(text): Checks whether text is an argument defined on wikipedia.py
    (these are -family, -lang, -log and others)
translate(xx, dict): dict is a dictionary, giving text depending on language,
    xx is a language. Returns the text in the most applicable language for
    the xx: wiki

output(text): Prints the text 'text' in the encoding of the user's console.
input(text): Asks input from the user, printing the text 'text' first.
showDiff(oldtext, newtext): Prints the differences between oldtext and newtext
    on the screen

getLanguageLinks(text,xx): get all interlanguage links in wikicode text 'text'
    in the form xx:pagename
removeLanguageLinks(text): gives the wiki-code 'text' without any interlanguage
    links.
replaceLanguageLinks(oldtext, new): in the wiki-code 'oldtext' remove the
    language links and replace them by the language links in new, a dictionary
    with the languages as keys and either Pages or titles as values
getCategoryLinks(text,xx): get all category links in text 'text' (links in the
    form xx:pagename)
removeCategoryLinks(text,xx): remove all category links in 'text'
replaceCategoryLinks(oldtext,new): replace the category links in oldtext by
    those in new (new a list of category Pages)
stopme(): Put this on a bot when it is not or not communicating with the Wiki
    any longer. It will remove the bot from the list of running processes,
    and thus not slow down other bot threads anymore.

I put it in Pywikipediabot/wikipedia.py/doc.Hillgentleman 16:38, 17 November 2007 (UTC)Reply

Error in article

(To work in Python25 http://www.python.org/download/, the files must be downloaded into the Python25 folder). I have installed Python25 and downloaded pywikipedia from cvs today, the pywikipedia files are on a different disk than the Python25 folder, and it works. I conclude that what this line claims is false. I am not 100% sure so I didn't edit it out myself. If anyone is 100% sure, please edit it out. Theroachman 23:47, 14 February 2007 (UTC)Reply

I've always thought this was false because I think I have Python 2.5 on the other computer I used to run Pywikipediabot on. But I just verified. I installed Python 2.5 and altered my environment variable so that the system would use Python25 instead of Python24, and Pywikipediabot runs the exact same as it did with Python 2.4 so this line must be false. I really don't get why anyone would have added this line. It's more unproductive than productive, IMHO you should never go and put frameworks like Pywikipediabot into the core folder of the programs running them.
Also, for those who use TortiseCVS there is a bit of confusion with the CVSROOT for those who have never used it before, I'm going to tweak that to.
Also, I have a good tip for Windows users that makes putting the bot in your My Documents not a pain to cd into. Dantman 20:38, 14 July 2007 (UTC)Reply

using special characters

I would like to use the template.py, but run into one problem.

template.py "Tableheader 100" "Tableheader|100%"

Notice the %-sign in the example, it gets lost. Any idea, how it could be included?

Ok, found it: %% --GunterS 13:05, 3 March 2007 (UTC)Reply

Dry run

Does anyone know how to run a bot, record edits that it would have made, but not actually make the edtits? (also known as a Dry-run)

Within this framework, you have to edit the code in wikipedia.py under the Site class, under the postData method so that "con.send(data)" line prints data instead, you'll have to comment out the rest of that method as well. This may cause other problems but it's the best place (As far as I know) to start. 138.67.78.236

Which folder?

Save the text file as user-config.py, saving the text file in the folder with all of the other .py files you downloaded.

Which folder is this referring to? The main pywikipedia folder?

Yes. --.anaconda 22:09, 17 July 2007 (UTC)Reply

how to find a developer

Under Contributing changes it states: send the file svn.diff to the developer

it doesnt state how.--Jan Friberg 16:41, 1 September 2007 (UTC)Reply

I have updated the "Contributing changes" section to mention the sf.net bug tracking system. John Vandenberg 02:06, 6 September 2007 (UTC)Reply

user-config.py

The instructions are a bit unclear about what parts are for other languages or other wikis. If I just want to edit wikipedia, shoud my user-config.py file just read:

  mylang = 'en'
  usernames['wikipedia']['en'] = u'mybotname'

Because when I try that, it tells me "SyntaxError: unexpected character after line continuation character".

Various options

I think we need a bit more options described in the configuration section. There's a few options that were essential for getting the bot to work (e.g. adding 'Colorized_output = False') that are not described on the main page - and if there are other variables available, they should be listed. Of course, the necessity of that variable probably counts as a bug. --76.10.156.14 20:33, 18 November 2007 (UTC)Reply

NewImages generator

how can I get recently uploaded pages via pywikipedia?

A Sub Project:Translate editSummary and update bot information for some scripts in Meta

(Sorry, my English is not very good)I am running some bot scripts in some languages WP now. (All statistics in here) But I found a lot of editSummary is not ready in scripts. I have to ask local communities (or they tell me the correct messages by themselves), find the better translate, and patch to Subversion by myself.I think we can make a sub project or translate request in here, and update the message by everybody --Alex S.H. Lin 17:11, 30 December 2007 (UTC)Reply

Login problems

Hi all,

I'm making a few experimentations with the pywikipediabot but I'm facing a major problem; i was able to set up Python and the bot in itself, though when I want to launch login.py, it asks me my password and I can't type a thing. I tried on WP FR and EN but it didn't change a thing. Can anyone help me on that point? Many thanks. --Bombastus 10:23, 5 January 2008 (UTC)Reply

Hi there ! When the bot asks you to enter your password, you can enter it on your keyboard, even if the letters don't appear on the screen. Once it's done, press Enter and the bot will tell you if it's logged in or not. -Urobore 06:32, 11 February 2008 (UTC)Reply

Installing?

A quick question, maybe the answer is obvious, I am not to sure. To install the needed software (Python, Bot, etc...) is this installed on the users computer, or the server where the wiki is? I am still new to this sort of stuff. --CaptainBrooks 03:01, 16 March 2008 (UTC)Reply

On the computer from where You run the bot, best regards, --birdy geimfyglið (:> )=| 03:54, 16 March 2008 (UTC)Reply

Non-interactive mode

I can only access my MediaWiki at my hoster through (s)ftp and thus installed a phpshell to have some shell functionality. Unfortunately this is not an interactive shell. Can I still use these bots in an non-interactive mode. I already fail at the login. I guess it asks for the password.

I am especially interested in using weblinkchecker.py and replace.py. But ideally I would like to be able to use all scripts.

Thanks! -- 217.236.174.233 22:06, 11 April 2008 (UTC)Reply

LOL. Forget about my previous question. I figured the bots don't run on the server itself but on any client connected to the internet... that was a misunderstanding which isn't really made clear in the documentation. -- 217.236.143.111 12:07, 12 April 2008 (UTC)Reply

Errors

'python' is not recognized

Attempted to run the script login.py by typing "python login.py":

'python' is not recognized as an internal or external command, operable program or batch file.

Answer at: http://www.python.org/doc/faq/windows/

This problem is solved by using ActivePython instead. The instructions now suggest downloading ActivePython instead of Python. (Thanks alnokta)

Odessaukrain 21:11, 24 May 2008 (UTC)Reply

user-config.py

In cmd.exe on the C:\pywikipedia line, when I type:

login.py

I get this message:

Please create a file user-config.py, and put in there:

One line saying "mylang='language'"
One line saying "usernames ['wikipedia']['language']='yy'"

...filling in your username and the language code of the wiki you want to work on.

For other possible configuration variables check config.py.

Answer: Pywikipedia_bot_on_non-Wikimedia_projects#user-config.py_file

Odessaukrain 18:02, 24 May 2008 (UTC)Reply

Question:

How can I set the language ("lang" in global arguments) to be all the languages from user config? --Firilacroco 14:55, 5 June 2008 (UTC)Reply

EOF while parsing

I installed Python 2.5 and pywikipedia and created the file user-config.py as well as a file Gothic Almanach_family.py, because I need a bot for [almanach.worldofgothic.de]. When I attempt to run login.py I receive the following message


F:\Programme\pywikipedia>python login.py
Traceback (most recent call last):
  File "login.py", line 49, in <module>
    import wikipedia, config
  File "F:\Programme\pywikipedia\wikipedia.py", line 5815, in <module>
    getSite()
  File "F:\Programme\pywikipedia\wikipedia.py", line 5705, in getSite
    persistent_http=persistent_http)
  File "F:\Programme\pywikipedia\wikipedia.py", line 3973, in __init__
    self.family = Family(fam, fatal = False)
  File "F:\Programme\pywikipedia\wikipedia.py", line 3789, in Family
    exec "import %s_family as myfamily" % fam
  File "<string>", line 1
    import Gothic Almanach_family as myfamily
                                           ^
SyntaxError: unexpected EOF while parsing

F:\Programme\pywikipedia>

--91.32.196.116 17:52, 26 June 2008 (UTC)Reply

Toolserver

I uploaded the lastest version of pywikipedia framework on my account on toolserver and it works fine. But, is there any method to leave the server to work alone (I won't need to leave the terminal open)? Thank you in advance. Firilacroco 11:02, 2 August 2008 (UTC)Reply

WebDev

I am using the http://DeveloperSide.NET package and currently running:

MediaWiki: 1.11.0, PHP: 5.2.5 (apache2handler), MySQL: 5.0.45-community-nt-log

In order for me to get the bot working I had to add the following to my LocalSettings.php:

$wgEnableAPI=true;

GobleS 08/20/2008

Incorrect instructions?

I followed all the instructions, and when it says

Checked for running processes. 1 processes currently running, including the current process. 

Password for user SupuhBot on simpedia:en:

it won't let me type anything but enter! As you may guess, this doesn't work.Supuhstar 22:09, 22 September 2008 (UTC)Reply

okay, I Figured out how to bypass that step, but now I get this:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Supuhstar>chdir "C:\Documents and Settings\Supuhstar\p
ywikipedia"

C:\Documents and Settings\Supuhstar\pywikipedia>login.py -pass:(correct password)
Checked for running processes. 1 processes currently running, including the curr
ent process.
Logging in to simpedia:en as SupuhBot
Login failed. Wrong password or CAPTCHA answer?

C:\Documents and Settings\Supuhstar\pywikipedia>_
Supuhstar 00:48, 24 September 2008 (UTC)Reply
You may check the user name in your user-config.py and then maybe you try running login.py without any parameter and typing the password on prompting. --Plasmarelais 18:09, 29 September 2009 (UTC)Reply

problem to login

i do all required in the Using_the_python_wikipediabot...but i cant login...and my cmd eror is [1]...i ask it my friend...and he say this problem in my cmd encoding....what can i do now?--Komeil 4life 04:27, 28 September 2008 (UTC)Reply

login problem

first, i work with my own wiki.second, i do all required steps and i cant login.i get:

 for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 11001] get addrinfo failed

please help me! Thanks, --Robypedia 18:44, 18 November 2008 (UTC)Reply

I've got the same problem. Does anybody know what's wrong? --85.1.120.103 19:24, 15 July 2009 (UTC)Reply

running the bot on a protected site.

Hi, I want to run the bot on my test environment which is password protected using the .htaccess file from apache.

How can I configure pywikipedia to insert that password too?

thanks, --Dongiulio 14:33, 3 December 2008 (UTC)Reply

Did you ever get this to work? If so, what did you do? --AdrianArcher 15:44, 11 March 2009 (UTC)Reply

Standardize interwiki.py

Has anyone used this script? If so, could you give me a few examples of articles it has worked on, so I can see what it does? It says on the script page that it moves "the interwiki links on top of the articles", but most languages would want them at the very bottom if I'm not mistaken. How can I get it to do that? --Helt 05:32, 4 June 2009 (UTC)Reply

Far as I know, interwiki.py will always place a new iwl, where the other iwls on this page already are placed. If the bot sets the first iwl on page, it sets on bottom of the page. So I think, placing to bottom is default. standardize interwiki.py just means to go through the pages, moving existing iwl to the top. But I've just tried it on a test page and it didn't move any iwl there. Strange. --Plasmarelais 18:05, 29 September 2009 (UTC)Reply

Help available here?

There are many questions and nearly no answers on this page... :( Is really nobody able to give a hint why login fails prompting

Login failed. Wrong password or CAPTCHA answer?

--85.1.120.103 14:49, 16 July 2009 (UTC)Reply

I fixed this by changing the scriptpath in the ***_family.py to the placing of the api.php.--131.159.0.7 11:29, 2 August 2009 (UTC)Reply

Edit token has failed. Retrying.

This error occurs with the latest version of pywikipedia. I have to install an older version (23 de octubre) of the library.--Esteban 23:08, 5 November 2009 (UTC)Reply