aboutsummaryrefslogtreecommitdiff
path: root/unpixelterm.py
diff options
context:
space:
mode:
authorjaseg <s@jaseg.de>2013-04-07 13:15:09 +0200
committerjaseg <s@jaseg.de>2013-04-07 13:15:09 +0200
commit97228be04424648c368ce71ab13bcf9581935ea4 (patch)
tree5ab060a7d725f64110fb56a72d20cd0fecc65be5 /unpixelterm.py
parentefbf9145c32c60021f8224b5644727bbe3505767 (diff)
downloadpixelterm-97228be04424648c368ce71ab13bcf9581935ea4.tar.gz
pixelterm-97228be04424648c368ce71ab13bcf9581935ea4.tar.bz2
pixelterm-97228be04424648c368ce71ab13bcf9581935ea4.zip
Made a more sane png-metadata format
Diffstat (limited to 'unpixelterm.py')
-rwxr-xr-xunpixelterm.py25
1 files changed, 9 insertions, 16 deletions
diff --git a/unpixelterm.py b/unpixelterm.py
index 47d05cb..416a057 100755
--- a/unpixelterm.py
+++ b/unpixelterm.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
-import os, sys, argparse, os.path
+import os, sys, argparse, os.path, json
+from collections import defaultdict
#NOTE: This script uses pygments for X256->RGB conversion since pygments is
#readily available. If you do not like pygments (e.g. because it is large),
#you could patch in something like https://github.com/magarcia/python-x256
@@ -38,23 +39,20 @@ def parse_escape_sequence(seq):
def unpixelterm(text):
lines = text.split('\n')
- metadata = {}
+ metadata = defaultdict(list)
try:
first = lines.index('$$$')
second = lines[first+1:].index('$$$')
- comment = []
- d = {}
- for l in lines[first+1:second+1]:
+ metadataarea = lines[first+1:second+1]
+ for i,l in enumerate(metadataarea):
parts = l.split(': ')
if len(parts) == 2:
k,v = parts
if k not in ['WIDTH', 'HEIGHT']:
- d[k.lower()] = d.get(k.lower(), []) + [v]
+ metadata[k.lower()] += [v]
else:
- comment.append(l)
- if comment:
- d['comment'] = d.get('comment', []) + ['\n'.join(comment)]
- metadata.update(d)
+ metadata['_comment'] = '\n'.join(metadataarea[i:])
+ break
lines[first:] = lines[first+1+second+1:]
except:
pass
@@ -118,13 +116,8 @@ if __name__ == '__main__':
if len(args.input) > 1:
print(f.name)
img, metadata = unpixelterm(f.read())
- if args.verbose:
- print('Metadata:')
pnginfo = PngImagePlugin.PngInfo()
- for k, v in metadata.items():
- if args.verbose:
- print('{:15}: {}'.format(k, '/'.join(v)))
- pnginfo.add_text(k, '/'.join(v))
+ pnginfo.add_text('pixelterm-metadata', json.dumps(metadata))
foo, _, _ = f.name.rpartition('.pony')
output = args.output or foo+'.png'
if args.output_dir: