1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#!/usr/bin/python3
import datetime
import locale
import xml.etree.ElementTree as et
import sys
import logging
#logging.basicConfig(level=logging.DEBUG)
import jinja2
def parse_one(elem):
"""
Parse one losung. Example:
<Losungen>
<Datum>2012-01-01T00:00:00</Datum>
<Wtag>Sonntag</Wtag>
<Sonntag>Neujahr</Sonntag>
<Losungstext>Die Furcht des HERRN wird Zions Schatz sein.</Losungstext>
<Losungsvers>Jesaja 33,6</Losungsvers>
<Lehrtext>Ein Mann war in Jerusalem, mit Namen Simeon; und
dieser Mann war fromm und gottesfürchtig und wartete auf den
Trost Israels. Er nahm Jesus auf seine Arme und lobte Gott und
sprach: Herr, nun lässt du deinen Diener in Frieden fahren, wie
du gesagt hast; denn meine Augen haben deinen Heiland
gesehen.</Lehrtext>
<Lehrtextvers>Lukas 2,25.28-30</Lehrtextvers>
</Losungen>
"""
logging.debug("losung = %s", elem)
out = {}
datum_str = elem.find('Datum').text
logging.debug("datum_str = %s", datum_str)
datum = datetime.datetime.strptime(datum_str, "%Y-%m-%dT%H:%M:%S")
out['date_id'] = datum.strftime("%Y-%m-%d")
out['date_full'] = datum.strftime("%A %x")
sunday = elem.find("Sonntag")
if sunday is not None:
out['sunday'] = sunday.text
out['watchwords'] = []
for tst in (('Losungstext', 'Losungsvers'),
('Lehrtext', 'Lehrtextvers')):
wword = {
'text': ''
}
wword['text'] = elem.find(tst[0]).text
wword['ref'] = elem.find(tst[1]).text
out['watchwords'].append(wword)
return out
def parse_file(filename):
tree = et.parse(filename).getroot()
article_list = []
env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates'))
template = env.get_template('german.html')
for los in tree.getiterator("Losungen"):
article_list.append(parse_one(los))
return template.render(articles=article_list).encode('utf8')
if __name__ == "__main__":
locale.setlocale(locale.LC_ALL, '')
loc = locale.getlocale()
locale.setlocale(locale.LC_ALL, ('de_DE', 'utf8'))
articles = parse_file(sys.argv[1])
locale.setlocale(locale.LC_ALL, loc)
print(articles)
|