User:GrabberBot/poster.py

From The Battle for Wesnoth Wiki
< User:GrabberBot
Revision as of 20:23, 19 August 2005 by Allefant (talk | contribs) (pasted code)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
#!/usr/bin/python

import sys, re, os
import mediawiki

url = "UnsortedContrib"

# read data to post
try:
    post = file("post.txt", "r").read().strip()
except IOError:
    sys.exit(0)

if post == "":
    sys.exit(0)

# open wiki page for editing, read current contents
mw = mediawiki.MediaWiki()
data = mw.fetch(url)

# find part of page to replace
mob = re.compile("== Recently posted images ==(.*)== See Also ==",
    re.S).search(data)
if mob:
    images = mob.group(1).strip()
    data = data[:mob.start(1)] + "\n\n" + images + "\n" + post + "\n\n" + data[mob.end(1):]
else:
    data = """\
This list is generated by a bot, and contains links to plain image attachements
which were posted to the forums recently. The bot can be found here:
http://www.wesnoth.org/forum/viewtopic.php?t=6078 The idea is to make it easier
to keep the [[GraphicLibrary]] updated with new graphics, if not, I'll just
remove it from my crontab again :)

You are encouraged to remove images which don't fit (e.g. screenshots, concept
art, off-topic images), and move proper unit graphics over to the
[[GraphicLibrary]]. To move an image, click on the '''Move''' link. To delete an
image, click the '''X'''. The effect won't be immediate, it merely will schedule
the command on a site I'm mis-using for this (so if you have a machine where you
can run the python script, by all means, let me know). For now, when my computer
is switched on the next time, the script will be run and it will read all the
scheduled commands and update the links.

== Recently posted images ==

%s

== See Also ==

* [[GraphicLibrary]]
""" % post

# post to the wiki
n = len(post.splitlines())
s = "s"
if n == 1: s = ""
mw.post(url, data, "added %d new forum image%s" % (n, s))

os.remove("post.txt")