Added book2txt.py to repository.
authorMarek Stępniowski <marek@stepniowski.com>
Mon, 15 Sep 2008 13:49:49 +0000 (15:49 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Mon, 15 Sep 2008 13:49:49 +0000 (15:49 +0200)
lib/librarian/bin/book2txt.py [new file with mode: 0755]

diff --git a/lib/librarian/bin/book2txt.py b/lib/librarian/bin/book2txt.py
new file mode 100755 (executable)
index 0000000..86f6f12
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import re
+import os
+import optparse
+import codecs
+
+
+REGEXES = [
+    (r'<rdf:RDF[^>]*>(.|\n)*?</rdf:RDF>', ''),
+    (r'<motyw[^>]*>(.|\n)*?</motyw>', ''),
+    ('<(begin|end)\\sid=[\'|"][b|e]\\d+[\'|"]\\s/>', ''),
+    (r'<extra>((<!--<(elementy_poczatkowe|tekst_glowny)>-->)|(<!--</(elementy_poczatkowe|tekst_glowny)>-->))</extra>', ''),
+    (r'<uwaga>[^<]*</uwaga>', ''),
+    (r'<p[a|e|r|t]>(.|\n)*?</p>', ''),
+    (r'<[^>]+>', ''),
+    (r'/$', ''),
+    (r'---', u'—'),
+    (r'--', u'-'),
+    (r',,', u'„'),
+    (r'"', u'”'),
+]
+
+
+if __name__ == '__main__':
+    # Parse commandline arguments
+    usage = """Usage: %prog [options] SOURCE [SOURCE...]
+    Convert SOURCE files to TXT format."""
+
+    parser = optparse.OptionParser(usage=usage)
+
+    parser.add_option('-v', '--verbose', action='store_true', dest='verbose', default=False,
+        help='print status messages to stdout')
+
+    options, input_filenames = parser.parse_args()
+
+    if len(input_filenames) < 1:
+        parser.print_help()
+        exit(1)
+
+    # Do some real work
+    for input_filename in input_filenames:
+        if options.verbose:
+            print input_filename
+        
+        output_filename = os.path.splitext(input_filename)[0] + '.txt'
+        
+        xml = codecs.open(input_filename, 'r', encoding='utf-8').read()
+        for pattern, repl in REGEXES:
+            # print pattern, repl
+            xml, n = re.subn(pattern, repl, xml)
+            # print n
+            
+        output = codecs.open(output_filename, 'w', encoding='utf-8')
+        output.write(xml)
+