import json import sys from collections import Counter from urllib.parse import parse_qs def main(path): paths, referrers, countries, utm_sources = ( Counter(), Counter(), Counter(), Counter() ) total = 0 with open(path) as f: for line in f: line = line.strip() if not line: continue entry = json.loads(line) total += 1 paths[entry.get("path", "")] += 1 referrers[entry.get("referrer") or "(direct)"] += 1 countries[entry.get("country") or "(unknown)"] += 1 qs = parse_qs(entry.get("query", "")) if "utm_source" in qs: utm_sources[qs["utm_source"][0]] += 1 print(f"Total logged page views: {total}\n") for label, counter in [ ("Top paths", paths), ("Top referrers", referrers), ("Countries", countries), ("UTM sources", utm_sources), ]: print(f"{label}:") for key, count in counter.most_common(10): print(f" {count:>5} {key}") print() if __name__ == "__main__": main(sys.argv[1] if len(sys.argv) > 1 else "logs/visits.jsonl")