This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
tabellioOOo/index_odt.py

57 lines
1.4 KiB
Python

#! /usr/bin/env python
import sys
import os
import zipfile
from optparse import OptionParser
from cStringIO import StringIO
try:
import elementtree.ElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
def main():
parser = OptionParser()
parser.add_option('-o', '--output', dest = 'output', metavar = 'FILENAME')
options, args = parser.parse_args()
if len(args) != 1:
print parser.get_usage()
sys.exit(1)
index = ET.Element('index')
for filename in os.listdir(args[0]):
if not filename.endswith('.odt'):
continue
z = zipfile.ZipFile(os.path.join(args[0], filename))
for zfile in z.namelist():
if zfile == 'meta.xml':
metadata = z.read(zfile)
break
else:
continue
metadata_tree = ET.ElementTree(ET.fromstring(metadata))
title = metadata_tree.find('//{http://purl.org/dc/elements/1.1/}title')
if title is None:
title = filename
else:
title = title.text
document = ET.SubElement(index, 'document')
document.attrib['filename'] = filename
document.text = title
out = StringIO()
ET.ElementTree(index).write(out)
if options.output:
file(options.output, 'w').write(out.getvalue())
else:
print out.getvalue()
if __name__ == '__main__':
main()