#! /usr/bin/env python """ mw2html - Mediawiki to static HTML I use this to create a personal website from a local mediawiki installation. No search functionality. Hacks the Monobook skin and the produced HTML. Connelly Barnes 2005. Public domain. """ __version__ = '0.1.0.0' import re import sys import getopt import random import urllib import urllib2 import textwrap import urlparse import os, os.path import errno import sha try: set except: from sets import Set as set try: import htmldata except: print 'Requires Python htmldata module:' print ' http://oregonstate.edu/~barnesc/htmldata/' sys.exit() MOVE_HREF = 'movehref' MADE_BY_COMMENT = '' INDEX_HTML = 'index.html' url_filename_cache = {} wrote_file_set = set() MONOBOOK_SKIN = 'monobook' # Constant identifier for Monobook. class Config: """ Instances contain all options passed at the command line. """ def __init__(self, rooturl, outdir, flatten=True, lower=True, index=None, clean=True, sidebar=None, hack_skin=True, made_by=True, overwrite=False, footer=None, skin=MONOBOOK_SKIN, move_href=True, remove_png=True, remove_history=True): self.rooturl = rooturl self.outdir = os.path.abspath(outdir) self.flatten = flatten self.lower = lower self.index = index self.clean = clean self.sidebar = sidebar self.hack_skin = hack_skin self.made_by = made_by self.overwrite = overwrite self.footer = footer self.skin = skin self.move_href = move_href if self.sidebar is not None: self.sidebar = os.path.abspath(self.sidebar) if self.footer is not None: self.footer = os.path.abspath(self.footer) self.remove_png = remove_png self.remove_history = remove_history def post_filename_transform(filename, config): """ User-customizable filename transform. Here filename is the full filename in the output directory. Returns modified full filename. """ return filename def monobook_fix_html_sidebar(doc, config): """ Sets sidebar for Mediawiki 1.4beta6 Monobook HTML output. """ if config.made_by: doc = doc.replace(')[\s\S]+?' + r'()', r'\1
' + SIDEBAR_ID + r'\2', doc) pre_sidebar = """