From 11d160200c0a671f268ee6a6998cdc1c7467265c Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 19 Jun 2026 16:56:18 +0200 Subject: [PATCH] inwx_domains_owner: Summen je Gruppe und TLD unter den Domains Co-Authored-By: Claude Opus 4.8 --- inwx_domains_owner.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/inwx_domains_owner.py b/inwx_domains_owner.py index c96667d..0bbe2bd 100644 --- a/inwx_domains_owner.py +++ b/inwx_domains_owner.py @@ -9,6 +9,7 @@ am Ende separat aufgeführt. import os import subprocess import sys +from collections import Counter from inwx_common import get_client, call_api @@ -112,6 +113,21 @@ def get_group(domain): return None +def tld_of(domain): + """Liefert die Top-Level-Domain (Teil hinter dem letzten Punkt).""" + return domain.rsplit('.', 1)[-1].lower() if '.' in domain else domain.lower() + + +def print_group_sums(recs, ziffer): + """Gibt für eine Gruppe die Anzahl Domains pro Top-Level-Domain aus. + + Eine Zeile je TLD im Format , z.B. '10 de 1'. + """ + counts = Counter(tld_of(r['name']) for r in recs) + for tld, anzahl in sorted(counts.items()): + print(f" {ziffer} {tld} {anzahl}") + + def format_domain_line(rec): """Einzeilige Darstellung einer Domain (eingerückt unter der Gruppe).""" if rec['ns'] is None: @@ -158,6 +174,7 @@ def main(): if matching: for rec in matching: print(format_domain_line(rec)) + print_group_sums(matching, ziffer) # Summe direkt unter den Domains else: print(" (keine Domains)") print() # Leerzeile zwischen den Gruppen @@ -170,6 +187,7 @@ def main(): ziffer = rec['ziffer'] hinweis = "" if ziffer is None else f" [citeq:{ziffer} unbekannt]" print(format_domain_line(rec) + hinweis) + print_group_sums(rest, "-") # Summe direkt unter den Domains print() print(f"Gesamt: {len(records)} Domain(s)")