this post was submitted on 15 Jun 2023
37 points (97.4% liked)

FREEMEDIAHECKYEAH

53 readers
1 users here now

๐Ÿฟ ๐Ÿ“บ ๐ŸŽต ๐ŸŽฎ ๐Ÿ“— ๐Ÿ“ฑ


๐Ÿดโ€โ˜ ๏ธ Wiki / ๐Ÿ’ฌ Chat


Rules

1. Please be kind and helpful to one another.

2. No racism, sexism, ableism, homophobia, transphobia, spam.

3. Linking to piracy sites is fine, but please keep links directly to pirated content in DMs.

founded 2 years ago
MODERATORS
 

Can we see somewhere what instances block us?

you are viewing a single comment's thread
view the rest of the comments
[โ€“] InternetPirate@lemmy.fmhy.ml 1 points 2 years ago* (last edited 2 years 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")