--- OSA_system2/OSAS_helpers.py 2004/11/29 09:48:07 1.1 +++ OSA_system2/OSAS_helpers.py 2005/03/03 20:41:00 1.7 @@ -2,10 +2,12 @@ import os.path from types import * import xml.dom.minidom +import zLOG -OSASObjectTypes=['OSAS_metaDataFile','OSAS_dir','OSAS_file','OSAS_imageFolder'] +OSASObjectTypes=['OSAS_metaDataFile','OSAS_dir','OSAS_file','OSAS_imageFolder','OSAS_dir_archive','OSAS_file_archive','OSAS_videoFolder','OSAS_videoFile'] OSASExcludedFiles=['TheVolumeSettingsFolder','TheFindByContentFolder'] + def getText(nodelist): """gibt text aus nodelist""" rc = "" @@ -14,62 +16,59 @@ def getText(nodelist): rc = rc + node.data return rc -def getMetaFile(path): +def getMetaInfoFromXML(path,xmlInfo): """get index.meta and translate it to HTML""" html=[] - if not os.path.exists(path+"/index.meta"): - - return "NO_METADATA" - else: - f = os.popen("cat "+path+"/index.meta","r") - lines = f.read() - dom = xml.dom.minidom.parseString(lines) - try: - name=getText(dom.getElementsByTagName("name")[0].childNodes) - except: - name="NOT_DEFINED!!!" - try: - creator=getText(dom.getElementsByTagName("creator")[0].childNodes) - except: - creator="NOT_DEFINED!!!" - - try: - creation_date=getText(dom.getElementsByTagName("archive-creation-date")[0].childNodes) - except: - creation_date="NOT_DEFINED!!!" - - try: - description=getText(dom.getElementsByTagName("description")[0].childNodes) - except: - description="NOT_DEFINED!!!" - - try: - type=getText(dom.getElementsByTagName("content-type")[0].childNodes) - except: + + dom = xml.dom.minidom.parseString(xmlInfo) + try: + name=getText(dom.getElementsByTagName("name")[0].childNodes) + except: + name="NOT_DEFINED!!!" + try: + creator=getText(dom.getElementsByTagName("creator")[0].childNodes) + except: + creator="NOT_DEFINED!!!" + + try: + creation_date=getText(dom.getElementsByTagName("archive-creation-date")[0].childNodes) + except: + creation_date="NOT_DEFINED!!!" + + try: + description=getText(dom.getElementsByTagName("description")[0].childNodes) + except: + description="NOT_DEFINED!!!" + + try: + type=getText(dom.getElementsByTagName("content-type")[0].childNodes) + except: type="" - if type=="scanned document": - html="

Document: "+name+"

" - elif type=="folder": - html="

Folder: "+name+"

" - else: - html="

Document: "+name+"

" - - html=html+"

created by: "+creator+" at: "+creation_date+"

" - html=html+"

Description

"+description+"

" - try: + if type=="scanned document": + html="

Document: "+name+"

" + elif type=="folder": + html="

Folder: "+name+"

" + else: + html="

Document: "+name+"

" + + html=html+"

created by: "+creator+" at: "+creation_date+"

" + html=html+"

Description

"+description+"

" + try: bib = dom.getElementsByTagName("meta")[0].getElementsByTagName("bib")[0] if bib.attributes.has_key('type'): - html=html+"

Info ("+bib.attributes['type'].value+")

" - else: - html=html+"

Info

" + html=html+"

Info ("+bib.attributes['type'].value+")

" + else: + html=html+"

Info

" html=html+getBib(bib.childNodes) - - except: + + except: """none""" # html=html.encode('utf-8','replace')+getBib(bib.childNodes).encode('utf-8','replace') - - return html.encode('utf-8') + + + return html + def getBib(nodelist): """ translate bibliographical entries """ @@ -85,43 +84,66 @@ def getBib(nodelist): #print rc return rc+"" -def getPropertyOfDirs(path,property): +def getPropertyOfDirs(indexMeta,propertyName): """gibt Eigenschaften der directorys gemaess Index.metas file in path aus - @param path: Pfad in dem das index.meta liegt - @param propery: Property die ausgegebenwerden soll + @param indexMeta: index.meta file + @param propertyName: Property die ausgegebenwerden soll @return: Hash mit key name des Directories and Value von property, None if error. """ ret={} + try: - dom=xml.dom.minidom.parse(os.path.split(path)[0]+"/index.meta") - for node in dom.getElementsByTagName("dir"): + dom=xml.dom.minidom.parseString(indexMeta) + + rootProp=xml.xpath.Evaluate("/resource/%s"%propertyName,dom) + if len(rootProp)==1: + property= getText(rootProp[0].childNodes) + ret["."]=property - property= getText(node.getElementsByTagName("content-type")[0].childNodes) - dirName=getText(node.getElementsByTagName("name")[0].childNodes) - ret[dirName]=property + for node in dom.getElementsByTagName("dir"): + try: + property= getText(node.getElementsByTagName(propertyName)[0].childNodes) + dirName=getText(node.getElementsByTagName("name")[0].childNodes) + ret[dirName]=property + except: + ret[dirName]=none return ret except: return ret -def dirHasProperty(path,propertyName,propertyValue): + +def dirHasProperty(path,indexMeta,propertyName,propertyValue): """gibt 1 zurück falls path hat propertyName und properName=propertyValue @param propertyName:Property von path in index.meta des parent folders von path @param propertyValue:Wert der Property @param path: Pfad der getestet werden soll """ - if getPropertyOfDirs(os.path.split(path)[0],propertyName).get(os.path.split(path)[1],None)==propertyValue: + if getPropertyOfDirs(indexMeta,propertyName).get(os.path.split(path)[1],None)==propertyValue: return 1 else: return 0 -def isImageFolder(path): +def isImageFolder(path,indexMeta): """check if folder contains images without metadata or with metadata""" # metadaten ergeben imagefolder - if dirHasProperty(path,'content-type','images'): + if dirHasProperty(path,indexMeta,'content-type','images'): return 1 - #sonst rate ob folder images enthaelten durch test nach suffix +def isVideoFolder(path,indexMeta): + """check if folder contains images without metadata or with metadata""" + # metadaten ergeben imagefolder + print "test video",path + if dirHasProperty(path,indexMeta,'media-type','video'): + return 1 + +def isVideoStream(path,indexMeta): + if dirHasProperty(path,indexMeta,'container-format','quicktime'): + return 1 + +def isImageFolderGuess(path): + """check if folder contains images without metadata or with metadata""" + #sonst rate ob folder images enthaelten durch test nach suffix try: dir=os.listdir(path) @@ -145,7 +167,7 @@ def checkOSASFileType(object): """ if os.path.split(object)[1][0]=="." or os.path.split(object)[1] in OSASExcludedFiles: return None - elif isImageFolder(object): + elif isImageFolderGuess(object): return 'OSAS_imageFolder' elif os.path.split(object)[1]=="index.meta": return 'OSAS_metaDataFile'