init
parent
2ba91ac8fd
commit
f661e7c901
|
@ -0,0 +1,82 @@
|
|||
import requests
|
||||
import json
|
||||
|
||||
# GraphQL query
|
||||
query = '''
|
||||
{
|
||||
nodes(softwarename: "lemmy") {
|
||||
domain
|
||||
name
|
||||
metatitle
|
||||
metadescription
|
||||
metaimage
|
||||
date_created
|
||||
uptime_alltime
|
||||
total_users
|
||||
active_users_monthly
|
||||
active_users_halfyear
|
||||
signup
|
||||
local_posts
|
||||
}
|
||||
}
|
||||
'''
|
||||
|
||||
# GraphQL endpoint URL
|
||||
url = 'https://api.fediverse.observer/'
|
||||
|
||||
# Request headers
|
||||
headers = {
|
||||
'User-Agent': 'Lemmy Overseer / mail@dbzer0.com',
|
||||
'Accept': '*/*',
|
||||
'Accept-Language': 'en-US,en;q=0.5',
|
||||
'Accept-Encoding': 'gzip, deflate, br',
|
||||
'Referer': 'https://api.fediverse.observer/',
|
||||
'Content-Type': 'application/json',
|
||||
'Origin': 'https://api.fediverse.observer',
|
||||
'DNT': '1',
|
||||
'Connection': 'keep-alive',
|
||||
'Sec-Fetch-Dest': 'empty',
|
||||
'Sec-Fetch-Mode': 'cors',
|
||||
'Sec-Fetch-Site': 'same-origin',
|
||||
'TE': 'trailers'
|
||||
}
|
||||
|
||||
# Create the request payload
|
||||
payload = {
|
||||
'query': query
|
||||
}
|
||||
|
||||
# Send the POST request to the GraphQL endpoint
|
||||
response = requests.post(url, headers=headers, json=payload)
|
||||
|
||||
# Check if the request was successful (HTTP 200 status code)
|
||||
if response.ok:
|
||||
# Extract the JSON response
|
||||
data = response.json()
|
||||
bad_nodes = []
|
||||
for node in data["data"]["nodes"]:
|
||||
is_bad = False
|
||||
local_posts = node["local_posts"]
|
||||
if node["total_users"] < 300:
|
||||
continue
|
||||
if local_posts == 0:
|
||||
local_posts= 1
|
||||
if node["total_users"] / local_posts > 20:
|
||||
is_bad = True
|
||||
# print(node)
|
||||
if is_bad:
|
||||
bad_node = {
|
||||
"domain": node["domain"],
|
||||
"uptime_alltime": node["uptime_alltime"],
|
||||
"local_posts": node["local_posts"],
|
||||
"total_users": node["total_users"],
|
||||
"active_users_monthly": node["active_users_monthly"],
|
||||
"signup": node["signup"],
|
||||
"local_posts": node["local_posts"],
|
||||
"user_post_ratio": node["total_users"] / local_posts,
|
||||
}
|
||||
bad_nodes.append(bad_node)
|
||||
print(json.dumps([bn["domain"] for bn in bad_nodes], indent=4))
|
||||
else:
|
||||
# Print the error message if the request failed
|
||||
print(f'Request failed with status code {response.status_code}: {response.text}')
|
Loading…
Reference in New Issue