from fba.models import instances
def fetch_peers(domain: str) -> list:
- print(f"DEBUG: domain({len(domain)})={domain},software='peertube' - CALLED!")
+ # DEBUG: print(f"DEBUG: domain({len(domain)})={domain},software='peertube' - CALLED!")
if not isinstance(domain, str):
raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
elif domain == "":
raise ValueError("Parameter 'domain' is empty")
- print(f"DEBUG: domain='{domain}' is a PeerTube, fetching JSON ...")
+ # DEBUG: print(f"DEBUG: domain='{domain}' is a PeerTube, fetching JSON ...")
peers = list()
start = 0
headers = tuple()
try:
- print(f"DEBUG: Checking CSRF for domain='{domain}'")
+ # DEBUG: print(f"DEBUG: Checking CSRF for domain='{domain}'")
headers = csrf.determine(domain, dict())
except network.exceptions as exception:
print(f"WARNING: Exception '{type(exception)}' during checking CSRF (fetch_peers,{__name__}) - EXIT!")
return peers
for mode in ["followers", "following"]:
- print(f"DEBUG: domain='{domain}',mode='{mode}'")
+ # DEBUG: print(f"DEBUG: domain='{domain}',mode='{mode}'")
while True:
data = network.get_json_api(
domain,
(config.get("connection_timeout"), config.get("read_timeout"))
)
- print(f"DEBUG: data['{type(data)}']='{data}'")
+ # DEBUG: print(f"DEBUG: data['{type(data)}']='{data}'")
if "error_message" not in data:
- print(f"DEBUG: Success, data[json]()={len(data['json'])}")
+ # DEBUG: print(f"DEBUG: Success, data[json]()={len(data['json'])}")
if "data" in data["json"]:
rows = data["json"]["data"]
- print(f"DEBUG: Found {len(rows)} record(s).")
+ # DEBUG: print(f"DEBUG: Found {len(rows)} record(s).")
for record in rows:
- print(f"DEBUG: record()={len(record)}")
- if mode in record and "host" in record[mode]:
- print(f"DEBUG: Found host={record[mode]['host']}, adding ...")
- peers.append(record[mode]["host"])
- else:
- print(f"WARNING: record from '{domain}' has no '{mode}' or 'host' record: {record}")
+ # DEBUG: print(f"DEBUG: record()={len(record)}")
+ for mode2 in ["follower", "following" ]:
+ # DEBUG: print(f"DEBUG: mode2='{mode2}'")
+ if mode2 in record and "host" in record[mode2]:
+ # DEBUG: print(f"DEBUG: Found host='{record[mode2]['host']}', adding ...")
+ peers.append(record[mode2]["host"])
+ else:
+ print(f"WARNING: record from '{domain}' has no '{mode2}' or 'host' record: {record}")
if len(rows) < 100:
- print(f"DEBUG: Reached end of JSON response, domain='{domain}'")
+ # DEBUG: print(f"DEBUG: Reached end of JSON response, domain='{domain}'")
break
# Continue with next row
start = start + 100
+ else:
+ print(f"WARNING: domain='{domain}' causes error during API query: '{data['error_message']}' - SKIPPED!")
+ break
- print(f"DEBUG: Adding '{len(peers)}' for domain='{domain}'")
+ # DEBUG: print(f"DEBUG: Adding '{len(peers)}' for domain='{domain}'")
instances.set_data("total_peers", domain, len(peers))
- print(f"DEBUG: Returning peers[]='{type(peers)}'")
+ # DEBUG: print(f"DEBUG: Returning peers[]='{type(peers)}'")
return peers