From 3c68964f5b80997703d4713dc3f5eda47ae68f3c Mon Sep 17 00:00:00 2001
From: Patrick Cernko <pcernko@mpi-klsb.mpg.de>
Date: Tue, 16 Jan 2024 14:05:35 +0100
Subject: [PATCH] support for json output

---
 mailman-subscribers3.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/mailman-subscribers3.py b/mailman-subscribers3.py
index f515f3f..79615ef 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()
 
 
-- 
GitLab