view addDriToIndexMeta.py @ 21:90643ccc6545

cross scripting and xml mime-type
author dwinter
date Tue, 29 Jan 2013 17:20:25 +0100
parents fad73212354b
children f748e2b684c9
line wrap: on
line source

'''
Created on 01.11.2012

@author: dwinter
'''
import os
import managePurls.manageIndexMetaPURLs as manageIndexMetaPURLs 
import re
from lxml import etree

from os.path import join, getsize

errorFile = file("/tmp/addDRIErrors.txt","w")
parseErrorFile = file("/tmp/addDRIParseErrors.txt","w")

def addPURL(fl,purl,test=False):
    try:
        tree = etree.parse(fl)
    except:
        parseErrorFile.write("PARSE ERROR:"+fl+"\n")
        return False
    dris = tree.xpath("/resource/meta/dri[@type='mpiwg']")
    
    if len(dris)==0: # erzeuge neu
        newDri = etree.Element("dri",type="mpiwg")
        newDri.text=purl
        metas=tree.xpath("/resource/meta")
        if len(metas)==0:
            parseErrorFile.write("no resource/meta: %s \n"%fl)
            return False
        else:
            metas[0].append(newDri)
    else:
        dris[0].text=purl
        
    print etree.tostring(tree, pretty_print=True)
    
    if not test:
        try:
            os.rename(fl, fl+"_mpiwg_dri")
            out = etree.tostring(tree, encoding="UTF-8",xml_declaration=False)
            fo = file(fl,"w")
            fo.write(out)
            fo.close
        except:
            errorFile.write(fl+"\n")
    return True
    
def addDriToIndexMeta(path,delpath="",replacepath="",test=False):
    
    md=manageIndexMetaPURLs.IndexMetaPURLManager()
    
    for root, dirs, files in os.walk(path):
    
    
        for name in files:
            if name=="index.meta":
                fl=join(root, name)
                shortPath=re.sub("^"+delpath,replacepath,fl)
                purl=md.getPurl(shortPath)
              
                addPURL(fl,purl,test)
                    
        if 'pageimg' in dirs:
            dirs.remove('pageimg')  # don't visit pageimf
        for dir in dirs:
            if  dir== "pageimg":
                dirs.remove('pageimg')
            if  dir.startswith("."):
                dirs.remove(dir)

if __name__ == '__main__':
     addDriToIndexMeta("/mpiwg/online/",delpath="/mpiwg/online",test=False)