#!/usr/bin/python
+# Copyright 2009, Sean M. Graham (www.sean-graham.com)
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# - Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# - 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.
+#
+# 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 REGENTS OR CONTRIBUTORS 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 xml.dom.minidom
import os
import codecs
parent.appendChild(element)
-def addEntryForId(outDoc, element, username, id):
+def addEntryForId(outDoc, element, username, id, includeSecure):
entryFile = open("%s/L-%s" % (username,id), "r")
inDoc = xml.dom.minidom.parse(entryFile)
# Create an entry element
entry = outDoc.createElement("entry")
- element.appendChild(entry)
# Create an itemid element
appendTextNode(outDoc, entry, "itemid", getNodeText(inDoc,"itemid"))
event = inDoc.getElementsByTagName("event")[0]
appendTextNode(outDoc, entry, "event", getNodeText(event, "event"))
- # Create an allowmask element (doesn't exist in pydump output if public)
- maskText = getNodeText(inDoc, "allowmask")
+ security = getNodeText(inDoc, "security")
- # XXXSMG: consult L-1411 and L-976 for examples of security and
- # allowmask use
- if(maskText != ""):
- appendTextNode(outDoc, entry, "allowmask", maskText)
- else:
- appendTextNode(outDoc, entry, "allowmask", "0")
+ if(security != ""):
+ # don't append this entry unless the user provided the argument
+ if(includeSecure == False):
+ print("omitting secure entry: L-%s" % id)
+ return
+ else:
+ if(security == "usemask"):
+ print("including allowmask entry: L-%s" % id)
+
+ # Create an allowmask element
+ maskText = getNodeText(inDoc, "allowmask")
+
+ if(maskText != ""):
+ appendTextNode(outDoc, entry, "allowmask", maskText)
+ else:
+ appendTextNode(outDoc, entry, "allowmask", "0")
+ else:
+ print("including private entry: L-%s" % id)
+
+ appendTextNode(outDoc, entry, "security", security)
# Create a taglist element
appendTextNode(outDoc, entry, "taglist", getNodeText(inDoc, "taglist"))
# with it
addCommentsForId(outDoc, entry, username, id)
+ element.appendChild(entry)
+
def addCommentsForId(outDoc, entry, username, id):
try:
commentFile = open("%s/C-%s" % (username,id), "r")
def main(argv):
username = ""
entryLimit = 250
+ includeSecure = False;
-
- if( len(argv) != 2 ):
+ if( len(argv) < 2 ):
print( "Usage: convertdump.py <username> <entrylimit>" )
return
else:
username = argv[0]
entryLimit = int(argv[1])
+ try:
+ includeSecure = bool(argv[2])
+ except IndexError:
+ includeSecure = False
+
+ if(includeSecure == True):
+ print( "Warning: Including secure entries in XML output" )
+
userDir = os.listdir(username)
highNum = -1
entryArray.sort()
-
# Create the minidom document
outDoc = xml.dom.minidom.Document()
ljElement = outDoc.createElement("livejournal")
outDoc.appendChild(ljElement)
- entryLimit = 250
currentFileEntry = 0
# start processing entries
for entry in entryArray:
- addEntryForId(outDoc, ljElement, username, entry)
+ addEntryForId(outDoc, ljElement, username, entry, includeSecure)
currentFileEntry += 1
- if( currentFileEntry == entryLimit ):
+ if( currentFileEntry == entryLimit or entry == entryArray[-1] ):
f = open("%s - %s.xml" % (username, entry), "w")
tempXML = outDoc.toxml("UTF-8")