#!/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()