summaryrefslogtreecommitdiff
path: root/diagram.py
diff options
context:
space:
mode:
Diffstat (limited to 'diagram.py')
-rwxr-xr-xdiagram.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/diagram.py b/diagram.py
new file mode 100755
index 0000000..ecef7a6
--- /dev/null
+++ b/diagram.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python3
+#-*- coding:utf-8 -*-
+
+import networkx as nx
+from html.parser import HTMLParser
+import re, os
+
+G = nx.Graph()
+node_colors = []
+
+# gescrapte Daten laden
+f = open("data/users.txt", encoding = "utf-8")
+addresses = eval(f.read())
+f.close()
+
+class User(object):
+ def __init__(self, name, firstname, lastname, mail, nick, provider):
+ self.name = name
+ self.firstname = firstname
+ self.lastname = lastname
+ self.mail = mail
+ self.nick = nick
+ self.provider = provider
+
+users = []
+
+# Adressen durchgehen und Edges / Nodes erstellen
+for user in addresses:
+ if len(addresses[user]) < 1:
+ continue
+
+ firstname, lastname = re.match("(.+) ([^ ]+)", user).groups()
+ nick, provider = re.match("(.*?)@([^@]+)", addresses[user]).groups()
+
+ users.append(User(user, firstname, lastname, addresses[user], nick, provider))
+
+for user in users:
+ G.add_node(user.name)
+
+ # nicht weiter verarbeiten
+ users.remove(user)
+
+ userswithprovider = len([i for i in users if i.provider == user.provider])
+ if userswithprovider > 0:
+ G.add_node(user.provider)
+ G.add_edge(user.name, user.provider)
+
+ brothersisters = [i for i in users if i.lastname == user.lastname]
+ if len(brothersisters) > 0:
+ for brothersister in brothersisters:
+ G.add_edge(user.name, brothersister.name)
+
+ samenicks = [i for i in users if i.nick == user.nick]
+ if len(samenicks) > 0:
+ for samenick in samenicks:
+ G.add_edge(user.name, samenick.name)
+
+nx.write_gml(G, 'data/graph.gml')
+
+# Encoding fixen
+p = HTMLParser()
+f = open('data/graph.gml', 'r')
+s = p.unescape(f.read())
+f.close()
+os.remove('data/graph.gml')
+f = open('data/graph.gml', 'w')
+f.write(s)
+f.close()