From a4b3ca86ea28835a038d8458f06fa10af324952c Mon Sep 17 00:00:00 2001 From: Christopher Arndt Date: Tue, 15 Oct 2019 15:13:54 +0200 Subject: Add example Python script to list plugin presets --- bindings/python/lv2_list_presets.py | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 bindings/python/lv2_list_presets.py (limited to 'bindings/python') diff --git a/bindings/python/lv2_list_presets.py b/bindings/python/lv2_list_presets.py new file mode 100755 index 0000000..561e3f8 --- /dev/null +++ b/bindings/python/lv2_list_presets.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +import lilv + + +NS_PRESETS = "http://lv2plug.in/ns/ext/presets#" + + +def print_presets(uri): + """Print all presets of an LV2 plugin to stdout.""" + + world = lilv.World() + world.load_all() + world.ns.presets = lilv.Namespace(world, NS_PRESETS) + plugins = world.get_all_plugins() + plugin = plugins[uri] + presets = plugin.get_related(world.ns.presets.Preset) + + preset_list = [] + for preset in presets: + world.load_resource(preset) + labels = world.find_nodes(preset, world.ns.rdfs.label, None) + label = str(labels[0]) if len(labels) > 0 else "" + + if not label: + sys.stderr.write("warning: Preset <%s> has no label\n" % preset) + + preset_list.append((str(preset), str(label))) + + for preset in sorted(preset_list): + print('<%s> "%s"' % preset) + + +if __name__ == "__main__": + if len(sys.argv) != 2: + sys.stderr.write("Usage: %s PLUGIN_URI\n" % (sys.argv[0])) + sys.exit(1) + + try: + print_presets(sys.argv[1]) + except ValueError as e: + sys.stderr.write("error: %s\n" % e) + except KeyError as e: + sys.stderr.write("error: %s\n" % str(e).strip("'")) -- cgit v1.2.1