Revision: 5712 Author: balasyum Date: 2008-07-14 10:01:28 +0000 (Mon, 14 Jul 2008)
Log Message: ----------- Adding a script that displays the ordinal number of new articles
Added Paths: ----------- trunk/pywikipedia/articlenos.py
Added: trunk/pywikipedia/articlenos.py =================================================================== --- trunk/pywikipedia/articlenos.py (rev 0) +++ trunk/pywikipedia/articlenos.py 2008-07-14 10:01:28 UTC (rev 5712) @@ -0,0 +1,81 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- +""" +A script that displays the ordinal number of the new articles being created as visible on the Recent Changes list. +The script doesn't make any edits, no bot account needed. +""" + +# Author: Balasyum +# http://hu.wikipedia.org/wiki/User:Balasyum +# License : GFDL + +from ircbot import SingleServerIRCBot +from irclib import nm_to_n, nm_to_h, irc_lower, ip_numstr_to_quad, ip_quad_to_numstr +import wikipedia +import re + +class ArtNoDisp(SingleServerIRCBot): + def __init__(self, site, channel, nickname, server, port=6667): + SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname) + self.channel = channel + self.site = wikipedia.getSite() + self.other_ns = re.compile(u'14[[07(' + u'|'.join(site.namespaces()) + u')') + self.api_url = self.site.api_address() + self.api_url += 'action=query&meta=siteinfo&siprop=statistics&format=xml' + self.api_found = re.compile(r'articles="(.*?)"') + self.re_edit = re.compile(r'^C14[[^C07(?P<page>.+?)^C14]]^C4 (?P<flags>.*?)^C10 ^C02(?P<url>.+?)^C ^C5*^C ^C03(?P<user>.+?)^C ^C5*^C (?^B?(?P<bytes>[+-]?\d+?)^B?) ^C10(?P<summary>.*)^C'.replace('^B', '\002').replace('^C', '\003').replace('^U', '\037')) + + def on_nicknameinuse(self, c, e): + c.nick(c.get_nickname() + "_") + + def on_welcome(self, c, e): + c.join(self.channel) + + def on_privmsg(self, c, e): + pass + + def on_pubmsg(self, c, e): + match = self.re_edit.match(e.arguments()[0]) + if not match: + return + if not ('N' in match.group('flags')): + return + try: + msg = unicode(e.arguments()[0],'utf-8') + except UnicodeDecodeError: + return + if self.other_ns.match(msg): + return + name = msg[8:msg.find(u'14',9)] + text = self.site.getUrl(self.api_url) + entry = self.api_found.findall(text) + page = wikipedia.Page(site, name) + try: + text = page.get() + except wikipedia.NoPage: + return + except wikipedia.IsRedirectPage: + return + print entry[0], name + + def on_dccmsg(self, c, e): + pass + + def on_dccchat(self, c, e): + pass + + def do_command(self, e, cmd): + pass + + def on_quit(self, e, cmd): + pass + +def main(): + site = wikipedia.getSite() + site.forceLogin() + chan = '#' + site.language() + '.' + site.family.name + bot = ArtNoDisp(site, chan, site.loggedInAs(), "irc.wikimedia.org") + bot.start() + +if __name__ == "__main__": + main()
Property changes on: trunk/pywikipedia/articlenos.py ___________________________________________________________________ Name: svn:executable + *