Spaces:
Running
Running
| 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") | |