<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/index.php?action=history&amp;feed=atom&amp;title=User%3AGrabberBot%2Fmediawiki.py</id>
	<title>User:GrabberBot/mediawiki.py - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/index.php?action=history&amp;feed=atom&amp;title=User%3AGrabberBot%2Fmediawiki.py"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:GrabberBot/mediawiki.py&amp;action=history"/>
	<updated>2026-04-22T09:36:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:GrabberBot/mediawiki.py&amp;diff=4390&amp;oldid=prev</id>
		<title>Allefant at 13:22, 1 November 2005</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:GrabberBot/mediawiki.py&amp;diff=4390&amp;oldid=prev"/>
		<updated>2005-11-01T13:22:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 13:22, 1 November 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l76&quot; &gt;Line 76:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 76:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def fetch(self, page):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def fetch(self, page):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; page = urllib.quote(page)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; request = self.request(wiki_url + &amp;quot;/?title=&amp;quot; + page + &amp;quot;&amp;amp;action=edit&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; request = self.request(wiki_url + &amp;quot;/?title=&amp;quot; + page + &amp;quot;&amp;amp;action=edit&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; site = urllib2.urlopen(request)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; site = urllib2.urlopen(request)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l101&quot; &gt;Line 101:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 102:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def post(self, page, text, comment):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def post(self, page, text, comment):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; page = urllib.quote(page)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; request = self.request(wiki_url + &amp;quot;/?title=&amp;quot; + page + &amp;quot;&amp;amp;action=submit&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; request = self.request(wiki_url + &amp;quot;/?title=&amp;quot; + page + &amp;quot;&amp;amp;action=submit&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; data = {&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; data = {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Allefant</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:GrabberBot/mediawiki.py&amp;diff=2003&amp;oldid=prev</id>
		<title>Allefant: forgot pre tags</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:GrabberBot/mediawiki.py&amp;diff=2003&amp;oldid=prev"/>
		<updated>2005-08-19T20:30:10Z</updated>

		<summary type="html">&lt;p&gt;forgot pre tags&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 20:30, 19 August 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# encoding: UTF-8&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# encoding: UTF-8&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l129&quot; &gt;Line 129:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 130:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; else:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; else:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; print sys.argv[0], &amp;quot;page&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; print sys.argv[0], &amp;quot;page&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Allefant</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:GrabberBot/mediawiki.py&amp;diff=2002&amp;oldid=prev</id>
		<title>Allefant: pasted code</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:GrabberBot/mediawiki.py&amp;diff=2002&amp;oldid=prev"/>
		<updated>2005-08-19T20:25:54Z</updated>

		<summary type="html">&lt;p&gt;pasted code&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;#!/usr/bin/env python&lt;br /&gt;
# encoding: UTF-8&lt;br /&gt;
&lt;br /&gt;
import sys, urllib2, urllib, re&lt;br /&gt;
&lt;br /&gt;
wiki_url = &amp;quot;http://wesnoth.org/wiki&amp;quot;&lt;br /&gt;
login_url = &amp;quot;http://wesnoth.org/mw/index.php?title=Special:Userlogin&amp;quot;&lt;br /&gt;
#wiki_url = &amp;quot;http://en.wikipedia.org/wiki&amp;quot;&lt;br /&gt;
#login_url = &amp;quot;http://en.wikipedia.org/w/index.php?title=Special:Userlogin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
class MediaWiki:&lt;br /&gt;
    cookies = {}&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.read_cookies()&lt;br /&gt;
&lt;br /&gt;
    def read_cookies(self):&lt;br /&gt;
        try:&lt;br /&gt;
            f = file(&amp;quot;cookie.txt&amp;quot;)&lt;br /&gt;
            for line in f.read().split(&amp;quot;\n&amp;quot;):&lt;br /&gt;
                kv = line.split(&amp;quot;=&amp;quot;, 1)&lt;br /&gt;
                if len(kv) == 2:&lt;br /&gt;
                    self.cookies[kv[0]] = kv[1]&lt;br /&gt;
        except IOError:&lt;br /&gt;
            pass&lt;br /&gt;
&lt;br /&gt;
    def store_cookies(self):&lt;br /&gt;
        f = file(&amp;quot;cookie.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
        for c in self.cookies:&lt;br /&gt;
            f.write(&amp;quot;%s=%s\n&amp;quot; % (c, self.cookies[c]))&lt;br /&gt;
&lt;br /&gt;
    def request(self, url):&lt;br /&gt;
        request = urllib2.Request(url)&lt;br /&gt;
        #request.set_proxy(&amp;quot;localhost:8080&amp;quot;, &amp;quot;http&amp;quot;)&lt;br /&gt;
        request.add_header(&amp;quot;User-Agent&amp;quot;, &amp;quot;GrabberBot&amp;quot;)&lt;br /&gt;
        cookies = &amp;quot;&amp;quot;&lt;br /&gt;
        for c in self.cookies:&lt;br /&gt;
            cookies += &amp;quot;%s=%s; &amp;quot; % (c, self.cookies[c])&lt;br /&gt;
        if cookies:&lt;br /&gt;
            request.add_header(&amp;quot;Cookie&amp;quot;, cookies)&lt;br /&gt;
        return request&lt;br /&gt;
&lt;br /&gt;
    def login(self):&lt;br /&gt;
        print &amp;quot;logging in&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        request = self.request(login_url + &amp;quot;&amp;amp;action=submitlogin&amp;quot;)&lt;br /&gt;
        data = {&lt;br /&gt;
            &amp;quot;wpName&amp;quot;: &amp;quot;GrabberBot&amp;quot;,&lt;br /&gt;
            &amp;quot;wpPassword&amp;quot;: &amp;quot;\x73\x61\x72\x75\x6d\x61\x6e&amp;quot;,&lt;br /&gt;
            &amp;quot;wpLoginattempt&amp;quot;: &amp;quot;Login&amp;quot;,&lt;br /&gt;
            &amp;quot;wpRemember&amp;quot;: &amp;quot;1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        data = urllib.urlencode(data, True)&lt;br /&gt;
&lt;br /&gt;
        class redir(urllib2.HTTPRedirectHandler):&lt;br /&gt;
            def redirect_request(self2, req, fp, code, msg, hdrs, newurl):&lt;br /&gt;
                for h in hdrs.getheaders(&amp;quot;set-cookie&amp;quot;):&lt;br /&gt;
                    s = h.split(&amp;quot;=&amp;quot;, 1)&lt;br /&gt;
                    key = s[0]&lt;br /&gt;
                    value = s[1].split(&amp;quot;;&amp;quot;, 1)[0]&lt;br /&gt;
                    self.cookies[key] = value&lt;br /&gt;
                r = self.request(newurl)&lt;br /&gt;
                self.store_cookies()&lt;br /&gt;
                return r&lt;br /&gt;
&lt;br /&gt;
        opener = urllib2.build_opener(redir())&lt;br /&gt;
        site = opener.open(request, data)&lt;br /&gt;
&lt;br /&gt;
        c = site.read()&lt;br /&gt;
        mob = re.compile(&amp;quot;&amp;lt;p class='error'&amp;gt;(.*?)&amp;lt;/p&amp;gt;&amp;quot;, re.S).search(c)&lt;br /&gt;
        if mob:&lt;br /&gt;
            return (True, mob.group(1))&lt;br /&gt;
&lt;br /&gt;
        return (False, &amp;quot;Ok&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def fetch(self, page):&lt;br /&gt;
        request = self.request(wiki_url + &amp;quot;/?title=&amp;quot; + page + &amp;quot;&amp;amp;action=edit&amp;quot;)&lt;br /&gt;
        site = urllib2.urlopen(request)&lt;br /&gt;
        contents = site.read()&lt;br /&gt;
&lt;br /&gt;
        if contents.find(&amp;quot;&amp;lt;title&amp;gt;Login required to edit&amp;quot;) &amp;gt;= 0:&lt;br /&gt;
            err = self.login()&lt;br /&gt;
            if err[0]:&lt;br /&gt;
                print err[1]&lt;br /&gt;
                raise &amp;quot;Login failed&amp;quot;&lt;br /&gt;
            request = self.request(wiki_url + &amp;quot;/?title=&amp;quot; + page + &amp;quot;&amp;amp;action=edit&amp;quot;)&lt;br /&gt;
            site = urllib2.urlopen(request)&lt;br /&gt;
            contents = site.read()&lt;br /&gt;
&lt;br /&gt;
        mob = re.compile(&amp;quot;&amp;quot;&amp;quot;&amp;lt;input type='hidden' value=&amp;quot;(.*?)&amp;quot; name=&amp;quot;wpEditToken&amp;quot; /&amp;gt;&amp;quot;&amp;quot;&amp;quot;).search(contents)&lt;br /&gt;
        self.token = mob.group(1)&lt;br /&gt;
        mob = re.compile(&amp;quot;&amp;quot;&amp;quot;&amp;lt;input type='hidden' value=&amp;quot;(.*?)&amp;quot; name=&amp;quot;wpEdittime&amp;quot; /&amp;gt;&amp;quot;&amp;quot;&amp;quot;).search(contents)&lt;br /&gt;
        self.time = mob.group(1)&lt;br /&gt;
&lt;br /&gt;
        mob = re.compile(&amp;quot;&amp;quot;&amp;quot;&amp;lt;textarea [^&amp;gt;]*?name=&amp;quot;wpTextbox1&amp;quot;[^&amp;gt;]*?&amp;gt;(.*?)&amp;lt;/textarea&amp;gt;&amp;quot;&amp;quot;&amp;quot;, re.S).search(contents)&lt;br /&gt;
        if mob:&lt;br /&gt;
            return mob.group(1)&lt;br /&gt;
        else:&lt;br /&gt;
            return &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    def post(self, page, text, comment):&lt;br /&gt;
        request = self.request(wiki_url + &amp;quot;/?title=&amp;quot; + page + &amp;quot;&amp;amp;action=submit&amp;quot;)&lt;br /&gt;
        data = {&lt;br /&gt;
            &amp;quot;wpSave&amp;quot;: &amp;quot;Save page&amp;quot;,&lt;br /&gt;
            &amp;quot;wpSection&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;wpSummary&amp;quot;: comment,&lt;br /&gt;
            &amp;quot;wpEdittime&amp;quot;: self.time,&lt;br /&gt;
            &amp;quot;wpTextbox1&amp;quot;: text,&lt;br /&gt;
            &amp;quot;wpMinoredit&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;wpEditToken&amp;quot;: self.token}&lt;br /&gt;
        data = urllib.urlencode(data, True)&lt;br /&gt;
        class ok(Exception):&lt;br /&gt;
            pass&lt;br /&gt;
        class redir(urllib2.HTTPRedirectHandler):&lt;br /&gt;
            def redirect_request(self2, req, fp, code, msg, hdrs, newurl):&lt;br /&gt;
                raise ok&lt;br /&gt;
        opener = urllib2.build_opener(redir())&lt;br /&gt;
        try:&lt;br /&gt;
            site = opener.open(request, data)&lt;br /&gt;
        except ok:&lt;br /&gt;
            return False&lt;br /&gt;
        return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    if len(sys.argv) == 2:&lt;br /&gt;
        mw = MediaWiki()&lt;br /&gt;
        site = mw.fetch(sys.argv[1])&lt;br /&gt;
        print site #mw.post(sys.argv[1], site + &amp;quot;\ntest&amp;quot;, &amp;quot;test&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print sys.argv[0], &amp;quot;page&amp;quot;&lt;/div&gt;</summary>
		<author><name>Allefant</name></author>
		
	</entry>
</feed>