#!/usr/bin/env python
#
# msnlog.py
#
# Simple script I whipped up to dump MSN Messenger logs in XML to a readable 
# plaintext format. It's not very robust, nor am I sure which versions of MSN
# Messenger it's compatible or incompatible with; I just had a specific 
# conversation I wanted to read, and this was the vehicle to that end.
#
# Copyright (c) 2005 David Warde-Farley
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
#    derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


import sys
from xml.dom.minidom import parse

if len(sys.argv) != 2:
	print >>sys.stderr, "usage: " + sys.argv[0] + " <inputfile>"
	sys.exit(1)

doml = parse(sys.argv[1])
for message in doml.getElementsByTagName("Message"):
	fromNode = message.getElementsByTagName("From")[0]
	userNode = fromNode.getElementsByTagName("User")[0]
	name = userNode.getAttribute("FriendlyName") + \
		" says:"
	print name.encode('utf-8')
	msg = message.getElementsByTagName("Text")[0].firstChild.nodeValue
	print msg.encode('utf-8')
	print ""
