Edgewall Software

TracWiki: mw2trac.py

File mw2trac.py, 1.4 KB (added by cojocar .a.t. gmail .d0t. com, 4 years ago)
Line 
1#!/usr/bin/python
2#
3# This script is provided AS IS, without any warranty!
4# Copyright lio@lunesu.com, placed in the public domain
5# Updated by Cojocar Lucian <cojocar .aT. gmail .d0t. com>
6# Works with mediawiki-1.9.3 (at least).
7import os
8import _mysql
9sql = "SELECT rev_id, page_id, page_title, old_text \
10FROM mw_revision \
11INNER JOIN mw_page ON rev_page = page_id \
12INNER JOIN mw_text ON rev_id = old_id \
13WHERE rev_id = ( ( \
14         \
15        SELECT max( rev_id ) \
16        FROM mw_revision \
17        WHERE rev_page = page_id ) \
18        )\
19AND ( \
20                page_namespace < 3 \
21                ) AND ( \
22                                page_is_redirect = 0 \
23                                );"
24db = _mysql.connect("localhost","wikiuser","insert_password","wikidb")
25db.query(sql)
26rs = db.use_result()
27while 1:
28    row = rs.fetch_row()
29    if row == ():
30        break
31    filename = row[0][2]
32    wiki = row[0][3]
33    # convert mediawiki to tracwiki
34    wiki = wiki.replace("\n***","\n   *")
35    wiki = wiki.replace("\n**", "\n  *")
36    wiki = wiki.replace("\n*",  "\n *")
37    wiki = wiki.replace("[[","wiki:")
38    wiki = wiki.replace("]]","")
39    wiki = wiki.replace("<br>","[[BR]]")
40    wiki = wiki.replace("\n:","\n ")
41    # todo: change titles?
42    # fixme: could use piping to import (no temp files)
43    #os.system("trac-admin /tracroot/iv wiki remote" & filename)
44    # write to file
45    f = open( filename, "w")
46    f.write( wiki )
47    f.close
48# import all wiki pages, manually!
49# os.system("trac-admin /var/trac/cspay wiki load .")
50# todo: remove files
51db.close()