From 1bf67f2f2808809048d9582b13c44bd719738286 Mon Sep 17 00:00:00 2001 From: spla Date: Sat, 21 Aug 2021 12:53:56 +0200 Subject: [PATCH] Added Best Fediverse Server Uptime Publishing Bot --- fediverse.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/fediverse.py b/fediverse.py index 7e1bfd5..16c1ad7 100644 --- a/fediverse.py +++ b/fediverse.py @@ -53,7 +53,7 @@ def get_alive_servers(server): cur = conn.cursor() - cur.execute("select alive, software, users_api, version from fediverse where server=(%s)", (server,)) + cur.execute("select alive, software, users_api, version, first_checked_at from fediverse where server=(%s)", (server,)) row = cur.fetchone() @@ -63,6 +63,7 @@ def get_alive_servers(server): serv_soft = row[1] serv_api = row[2] soft_version = row[3] + first_checked_at = row[4] cur.close() @@ -79,7 +80,9 @@ def get_alive_servers(server): try: - data = requests.get('https://' + server + serv_api, timeout=3) + user_agent = {'User-agent': 'Mozilla/5.0'} + + data = requests.get('https://' + server + serv_api, headers = user_agent, timeout=3) if serv_soft == "mastodon": if serv_api == '/nodeinfo/2.0?': @@ -160,7 +163,7 @@ def get_alive_servers(server): else: print("Server " + str(server) + " (" + serv_soft + ") is alive!") - insert_sql = "INSERT INTO fediverse(server, users, updated_at, software, alive, users_api, version) VALUES(%s,%s,%s,%s,%s,%s,%s) ON CONFLICT DO NOTHING" + insert_sql = "INSERT INTO fediverse(server, users, updated_at, software, alive, users_api, version, first_checked_at, last_checked_at) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s) ON CONFLICT DO NOTHING" conn = None @@ -170,9 +173,16 @@ def get_alive_servers(server): cur = conn.cursor() - cur.execute(insert_sql, (server, users, now, serv_soft, alive, serv_api, soft_version)) + cur.execute(insert_sql, (server, users, now, serv_soft, alive, serv_api, soft_version, now, now)) + + if first_checked_at != None: + + cur.execute("UPDATE fediverse SET users=(%s), updated_at=(%s), software=(%s), alive=(%s), users_api=(%s), version=(%s), last_checked_at=(%s) where server=(%s)", (users, now, serv_soft, alive, serv_api, soft_version, now, server)) + + else: + + cur.execute("UPDATE fediverse SET users=(%s), updated_at=(%s), software=(%s), alive=(%s), users_api=(%s), version=(%s), first_checked_at=(%s), last_checked_at=(%s) where server=(%s)", (users, now, serv_soft, alive, serv_api, soft_version, now, now, server)) - cur.execute("UPDATE fediverse SET users=(%s), updated_at=(%s), software=(%s), alive=(%s), users_api=(%s), version=(%s) where server=(%s)", (users, now, serv_soft, alive, serv_api, soft_version, server)) cur.execute("UPDATE world SET checked='t' where server=(%s)", (server,)) @@ -267,7 +277,13 @@ def get_alive_servers(server): cur = conn.cursor() - cur.execute("UPDATE fediverse SET updated_at=(%s), alive=(%s) where server=(%s)", (now, alive, server)) + if first_checked_at != None: + + cur.execute("UPDATE fediverse SET updated_at=(%s), alive=(%s), first_checked_at=(%s) where server=(%s)", (now, alive, NULL, server)) + + else: + + cur.execute("UPDATE fediverse SET updated_at=(%s), alive=(%s) where server=(%s)", (now, alive, server)) cur.execute("UPDATE world SET checked='t' where server=(%s)", (server,))