aboutsummaryrefslogtreecommitdiff
path: root/lib/tinytag/__main__.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tinytag/__main__.py')
-rwxr-xr-xlib/tinytag/__main__.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/tinytag/__main__.py b/lib/tinytag/__main__.py
new file mode 100755
index 0000000..52b9a99
--- /dev/null
+++ b/lib/tinytag/__main__.py
@@ -0,0 +1,38 @@
+import os
+import json
+import sys
+from tinytag import TinyTag, TinyTagException
+
+def usage():
+ print('usage: tinytag <filename> [--save-image <image-path>] [--format json|csv|tsv]')
+ sys.exit(1)
+
+def pop_param(name, _default):
+ if name in sys.argv:
+ idx = sys.argv.index(name)
+ sys.argv.pop(idx)
+ return sys.argv.pop(idx)
+ return _default
+
+try:
+ save_image_path = pop_param('--save-image', None)
+ formatting = pop_param('--format', 'json')
+ filename = sys.argv[1]
+except:
+ usage()
+
+try:
+ tag = TinyTag.get(filename, image=save_image_path is not None)
+ if save_image_path:
+ image = tag.get_image()
+ if image:
+ with open(save_image_path, 'wb') as fh:
+ fh.write(image)
+ if formatting == 'json':
+ print(json.dumps(tag.as_dict()))
+ elif formatting == 'csv':
+ print('\n'.join('%s,%s' % (k, v) for k, v in tag.as_dict().items()))
+ elif formatting == 'tsv':
+ print('\n'.join('%s\t%s' % (k, v) for k, v in tag.as_dict().items()))
+except TinyTagException as e:
+ sys.stderr.write(str(e)) \ No newline at end of file