Can we see somewhere what instances block us?

  • inventa@lemmy.fmhy.mlOP
    link
    fedilink
    arrow-up
    4
    arrow-down
    2
    ·
    1 year ago

    Thanks for this. It’s a bit too complicated, hopefully at some point the info will be just available

      • InternetPirate@lemmy.fmhy.ml
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year ago
        ❯ git clone https://github.com/LemmyNet/lemmy-stats-crawler
        ❯ cd lemmy-stats-crawler
        ❯ cargo run -- --json > stats.json
        ❯ python instance_analysis.py
        Enter the instance to find blocking instances: lemmy.fmhy.ml
        
        Instances blocking lemmy.fmhy.ml :
        feddit.de (642 users/day, 1317 users/week, 1397 users/month, 1441 users/half_year)
        civilloquy.com (1 users/day, 1 users/week, 2 users/month, 2 users/half_year)
        thesimplecorner.org (1 users/day, 1 users/week, 1 users/month, 1 users/half_year)
        
        Total users from blocking instances:
        644 users/day
        1319 users/week
        1400 users/month
        1444 users/half_year
        
        Instances blocked by lemmy.fmhy.ml :
        lemmygrad.ml (198 users/day, 388 users/week, 481 users/month, 726 users/half_year)
        
        Total users from blocked instances:
        198 users/day
        388 users/week
        481 users/month
        726 users/half_year
        

        instance_analysis.py

        import json
        
        with open("stats.json", "r") as file:
            data = json.load(file)
        
        def find_blocking_instances(target_instance, data):
            blocking_instances = []
            blocked_instances = []
        
            for instance in data["instance_details"]:
                federated_instances = instance["site_info"]["federated_instances"]
                if federated_instances is not None:
                    if target_instance in (federated_instances.get("blocked") or []):
                        blocking_instances.append(instance["domain"])
                    if instance["domain"] == target_instance:
                        blocked_instances.extend(federated_instances.get("blocked") or [])
        
            return blocking_instances, blocked_instances
        
        def get_instance_user_counts(instance):
            counts = instance["site_info"]["site_view"]["counts"]
            return {
                "users_active_day": counts["users_active_day"],
                "users_active_week": counts["users_active_week"],
                "users_active_month": counts["users_active_month"],
                "users_active_half_year": counts["users_active_half_year"],
            }
        
        def print_instance_activity(instance):
            domain = instance["domain"]
            counts = instance["site_info"]["site_view"]["counts"]
        
            print(f"{domain} ({counts['users_active_day']} users/day, {counts['users_active_week']} users/week, {counts['users_active_month']} users/month, {counts['users_active_half_year']} users/half_year)")
        
        total_blocking_users = {
            "users_active_day": 0,
            "users_active_week": 0,
            "users_active_month": 0,
            "users_active_half_year": 0,
        }
        
        total_blocked_users = {
            "users_active_day": 0,
            "users_active_week": 0,
            "users_active_month": 0,
            "users_active_half_year": 0,
        }
        
        user_input = input("Enter the instance to find blocking instances: ")
        blocking_instances, blocked_instances = find_blocking_instances(user_input, data)
        
        print("\nInstances blocking", user_input, ":")
        for domain in blocking_instances:
            for instance in data["instance_details"]:
                if instance["domain"] == domain:
                    print_instance_activity(instance)
                    user_counts = get_instance_user_counts(instance)
                    for key in total_blocking_users:
                        total_blocking_users[key] += user_counts[key]
        
        print("\nTotal users from blocking instances:")
        print(f"{total_blocking_users['users_active_day']} users/day")
        print(f"{total_blocking_users['users_active_week']} users/week")
        print(f"{total_blocking_users['users_active_month']} users/month")
        print(f"{total_blocking_users['users_active_half_year']} users/half_year")
        
        print("\nInstances blocked by", user_input, ":")
        for domain in blocked_instances:
            for instance in data["instance_details"]:
                if instance["domain"] == domain:
                    print_instance_activity(instance)
                    user_counts = get_instance_user_counts(instance)
                    for key in total_blocked_users:
                        total_blocked_users[key] += user_counts[key]
        
        print("\nTotal users from blocked instances:")
        print(f"{total_blocked_users['users_active_day']} users/day")
        print(f"{total_blocked_users['users_active_week']} users/week")
        print(f"{total_blocked_users['users_active_month']} users/month")
        print(f"{total_blocked_users['users_active_half_year']} users/half_year")