#!/usr/bin/env python3 import sys import argparse import json parser = argparse.ArgumentParser(prog = 'nostril-query', description = 'Construct nostr queries') parser.add_argument('-r', '--raw', action=argparse.BooleanOptionalAction) parser.add_argument('-a', '--authors') parser.add_argument('-p', '--mentions') parser.add_argument('-e', '--references') parser.add_argument('-d', '--parameter') parser.add_argument('-t', '--hashtag') parser.add_argument('-i', '--ids') parser.add_argument('-k', '--kinds') parser.add_argument('-s', '--search') parser.add_argument('-g', '--generic', nargs=2, metavar=('tag', 'value'), help="Generic tag query: `#: value`") parser.add_argument('-l', '--limit', type=int) def usage(): parser.print_help() sys.exit(1) args = parser.parse_args() filt = {} if args.authors: filt["authors"] = args.authors.split(",") if args.ids: filt["ids"] = args.ids.split(",") if args.limit is not None: filt["limit"] = args.limit if args.generic: (tag, val) = args.generic filt["#" + tag] = val.split(",") if args.search: filt["search"] = args.search if args.hashtag is not None: filt["#t"] = args.hashtag.split(",") if args.mentions is not None: filt["#p"] = args.mentions.split(",") if args.references is not None: filt["#e"] = args.references.split(",") if args.parameter is not None: filt["#d"] = args.parameter.split(",") if args.kinds is not None: kinds = args.kinds.split(",") filt["kinds"] = [a for a in map(lambda s: int(s), kinds)] q = "" if args.raw is not None: q = json.dumps(filt) else: q = json.dumps(["REQ","nostril-query",filt]) print(q)