X-Git-Url: https://wagner.pp.ru/gitweb/?a=blobdiff_plain;ds=sidebyside;f=convertdump.py;h=5ea760087d6a49f03b3d9d2aa46c28c7b1f76ad4;hb=ecc0f70e4520a0b48b3ff8f4c6aa65948c951574;hp=9a796cbbf873fa8c519a6f567f622503bc7626a2;hpb=4e30b2386cd897f861f118ace0de79cb058496a4;p=oss%2Fljdump.git diff --git a/convertdump.py b/convertdump.py index 9a796cb..5ea7600 100755 --- a/convertdump.py +++ b/convertdump.py @@ -1,8 +1,35 @@ #!/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 +import sys + from time import strptime, strftime def getNodeText(doc, nodename): @@ -38,13 +65,12 @@ def appendTextNode(doc, parent, nodename, value): parent.appendChild(element) -def addEntryForId(outDoc, 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") - ljElement.appendChild(entry) # Create an itemid element appendTextNode(outDoc, entry, "itemid", getNodeText(inDoc,"itemid")) @@ -60,13 +86,28 @@ def addEntryForId(outDoc, username, id): 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") - 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")) @@ -75,6 +116,8 @@ def addEntryForId(outDoc, username, id): # 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") @@ -128,54 +171,73 @@ def addCommentsForId(outDoc, entry, username, id): if(parentId != ""): appendTextNode(outDoc, outComment, "parent_itemid", parentId) +def main(argv): + username = "" + entryLimit = 250 + includeSecure = False; + + if( len(argv) < 2 ): + print( "Usage: convertdump.py " ) + 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) -userDir = os.listdir("grahams") + highNum = -1 + entryArray = [] -highNum = -1 -entryArray = [] + # get the list of entries + for file in userDir: + if file.startswith("L-"): + entryNum = int(file.replace("L-","")) -# get the list of entries -for file in userDir: - if file.startswith("L-"): - entryNum = int(file.replace("L-","")) + entryArray.append(entryNum) - entryArray.append(entryNum) + if( highNum < entryNum ): + highNum = entryNum - if( highNum < entryNum ): - highNum = entryNum + entryArray.sort() -entryArray.sort() + # Create the minidom document + outDoc = xml.dom.minidom.Document() + # Create the base element + ljElement = outDoc.createElement("livejournal") + outDoc.appendChild(ljElement) -# Create the minidom document -outDoc = xml.dom.minidom.Document() + currentFileEntry = 0 -# Create the base element -ljElement = outDoc.createElement("livejournal") -outDoc.appendChild(ljElement) + # start processing entries + for entry in entryArray: + addEntryForId(outDoc, ljElement, username, entry, includeSecure) -breakup = 250 -currentFileEntry = 0 + currentFileEntry += 1 -# start processing entries -for entry in entryArray: - addEntryForId(outDoc, "grahams", entry) + if( currentFileEntry == entryLimit or entry == entryArray[-1] ): - currentFileEntry += 1 + f = open("%s - %s.xml" % (username, entry), "w") + tempXML = outDoc.toxml("UTF-8") + f.write(tempXML) + + currentFileEntry = 0 - if( currentFileEntry == breakup ): + # Create the minidom document + outDoc = xml.dom.minidom.Document() - f = open("grahams - %s.xml" % entry, "w") - tempXML = outDoc.toxml("UTF-8") - f.write(tempXML) - - currentFileEntry = 0 + # Create the base element + ljElement = outDoc.createElement("livejournal") + outDoc.appendChild(ljElement) - # Create the minidom document - outDoc = xml.dom.minidom.Document() +if __name__ == "__main__": + main(sys.argv[1:]) - # Create the base element - ljElement = outDoc.createElement("livejournal") - outDoc.appendChild(ljElement)