in mediawiki, python

Python snippet to get Mediawiki/Wikipedia Recent Changes externally

Mediawiki allows one to send Recent Changes (RC) to a UDP port.
The ip address is defined by the variable wgRC2UDPAddress, and the port by the variable wgRC2UDPPort. It’s a really good idea that it’s a UDP transfer, since there is no need for any ACK, so Mediawiki doesn’t block if there is nothing listening on that port.

These parameters must be set in the LocalSettings.php file, like this, for example.

$wgRC2UDPAddress = '';
$wgRC2UDPPort = 9390;

I wrote a really simple python program (more a proof of concept) that receives the data, cleans it, and then prints it to stdout :

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim:syntax=python:sw=4:ts=4:expandtab
import SocketServer
import re

HOST,PORT = '', 9390

class MyUDPHandler(SocketServer.BaseRequestHandler):
def handle(self):
print re.sub(r'\x03\d{0,2}', '', self.request[0])

if __name__ == '__main__':
server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler)

I plan to make it into a complete project that will send the data/notifications using Jabber(XMPP).


Write a Comment