diff options
author | jaseg <s@jaseg.de> | 2013-04-07 13:15:09 +0200 |
---|---|---|
committer | jaseg <s@jaseg.de> | 2013-04-07 13:15:09 +0200 |
commit | 97228be04424648c368ce71ab13bcf9581935ea4 (patch) | |
tree | 5ab060a7d725f64110fb56a72d20cd0fecc65be5 /unpixelterm.py | |
parent | efbf9145c32c60021f8224b5644727bbe3505767 (diff) | |
download | pixelterm-97228be04424648c368ce71ab13bcf9581935ea4.tar.gz pixelterm-97228be04424648c368ce71ab13bcf9581935ea4.tar.bz2 pixelterm-97228be04424648c368ce71ab13bcf9581935ea4.zip |
Made a more sane png-metadata format
Diffstat (limited to 'unpixelterm.py')
-rwxr-xr-x | unpixelterm.py | 25 |
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: |