]> git.mxchange.org Git - fba.git/blobdiff - fetch_instances.py
Another masto fork
[fba.git] / fetch_instances.py
index 726306acb7f3b54b3e45b8aaa5cc980a7c9cacb9..e6090353e4e75fbdb2c03e579714ae1367b9a0db 100644 (file)
@@ -7,7 +7,7 @@ import json
 domain = sys.argv[1]
 
 headers = {
-    "user-agent": "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"
+    "user-agent": "Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Firefox/102.0"
 }
 
 
@@ -24,20 +24,26 @@ def get_peers(domain: str) -> str:
 
 peerlist = get_peers(domain)
 
-def get_type(domain: str) -> str:
+def get_type(instdomain: str) -> str:
     try:
-        res = get(f"https://{domain}/nodeinfo/2.1.json", headers=headers, timeout=5)
+        res = get(f"https://{instdomain}/nodeinfo/2.1.json", headers=headers, timeout=5)
         if res.status_code == 404:
-            res = get(f"https://{domain}/nodeinfo/2.0.json", headers=headers, timeout=5)
+            res = get(f"https://{instdomain}/nodeinfo/2.0", headers=headers, timeout=5)
+        if res.status_code == 404:
+            res = get(f"https://{instdomain}/nodeinfo/2.0.json", headers=headers, timeout=5)
         if res.ok and "text/html" in res.headers["content-type"]:
-            res = get(f"https://{domain}/nodeinfo/2.1", headers=headers, timeout=5)
+            res = get(f"https://{instdomain}/nodeinfo/2.1", headers=headers, timeout=5)
         if res.ok:
             if res.json()["software"]["name"] == "akkoma":
                 return "pleroma"
+            elif res.json()["software"]["name"] == "hometown":
+                return "mastodon"
+            elif res.json()["software"]["name"] == "ecko":
+                return "mastodon"
             else:
                 return res.json()["software"]["name"]
         elif res.status_code == 404:
-            res = get(f"https://{domain}/api/v1/instance", headers=headers, timeout=5)
+            res = get(f"https://{instdomain}/api/v1/instance", headers=headers, timeout=5)
         if res.ok:
             return "mastodon"
     except:
@@ -52,8 +58,12 @@ c.execute(
 )
 
 for instance in peerlist:
+    instance = instance.lower()
     print(instance)
     try:
+        c.execute(
+            "select domain from instances where domain = ?", (instance,)
+        )
         if c.fetchone() == None:
             c.execute(
                 "insert into instances select ?, ?, ?",
@@ -61,5 +71,5 @@ for instance in peerlist:
             )
         conn.commit()
     except Exception as e:
-        print("error:", e, blocker)
+        print("error:", e, instance)
 conn.close()