diff --git a/mailman-subscribers3.py b/mailman-subscribers3.py index f515f3f32ac1f753293ad9f6019b4b6642450007..79615ef830fb080aa43d87569e2cd3d93014080c 100755 --- a/mailman-subscribers3.py +++ b/mailman-subscribers3.py @@ -166,6 +166,7 @@ import re import string import urllib.request, urllib.parse, urllib.error import getopt +import json import http.client from time import sleep from html.parser import HTMLParser @@ -241,7 +242,7 @@ def main(): try: opts, args = getopt.getopt(sys.argv[1:], "ho:rd:fn:cKu:Uvs", ["help", "output=", "regular", "digest=", "fullnames", - "nomail=", "sympa", "csv", "kv", "url_path=", "unhide", "verbose", + "nomail=", "sympa", "csv", "kv", "json", "url_path=", "unhide", "verbose", "ssl"]) except: usage(2) @@ -278,6 +279,8 @@ def main(): kv = True if o in ("-c", "--csv"): csv = True + if o in ("-j", "--json"): + jsonoutput = True if o in ("-u", "--url_path"): url_path = a if o in ("-U", "--unhide"): @@ -382,6 +385,8 @@ or you may need to specify --url_path. if verbose and nunhide % 100 == 0: print('.', end=' ', file=sys.stderr) email = urllib.parse.unquote(email) + if jsonoutput: + continue if csv: print('"%s","%s","%s","%s","%s","%s","%s","%s","%s","%s"'\ % (d['_realname'], email, d['_mod'], d['_hide'], @@ -460,6 +465,9 @@ visibility %s else: print('%s <%s>' % (d['_realname'], email), file=fp) + if jsonoutput: + print(json.dumps(dict(subscriberlist), indent=4), file=fp) + fp.close()