diff options
Diffstat (limited to 'mwlib/timeline.py')
-rwxr-xr-x | mwlib/timeline.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/mwlib/timeline.py b/mwlib/timeline.py new file mode 100755 index 0000000..e85dd84 --- /dev/null +++ b/mwlib/timeline.py @@ -0,0 +1,52 @@ +#! /usr/bin/env python + +# Copyright (c) 2007-2008 PediaPress GmbH +# See README.txt for additional licensing information. + +"""implement http://meta.wikimedia.org/wiki/EasyTimeline +""" + +import os +import tempfile +try: + from hashlib import md5 +except ImportError: + from md5 import md5 + + +def drawTimeline(script, basedir=None): + if isinstance(script, unicode): + script = script.encode('utf8') + if basedir is None: + basedir = os.path.join(tempfile.gettempdir(), "timeline-%s" % (os.getuid(),)) + if not os.path.exists(basedir): + os.mkdir(basedir) + + m=md5() + m.update(script) + ident = m.hexdigest() + + pngfile = os.path.join(basedir, ident+'.png') + + if os.path.exists(pngfile): + return pngfile + + scriptfile = os.path.join(basedir, ident+'.txt') + open(scriptfile, 'w').write(script) + et = os.path.join(os.path.dirname(__file__), "EasyTimeline.pl") + + err = os.system("perl %s -P /usr/bin/ploticus -T /tmp/ -i %s" % (et, scriptfile)) + if err != 0: + return None + + svgfile = os.path.join(basedir, ident+'.svg') + + if os.path.exists(svgfile): + os.unlink(svgfile) + + if os.path.exists(pngfile): + return pngfile + + return None + + |