def open_spider(self, spider): self.gephi = GephiStreamerManager(iGephiUrl=self.gephi_uri, iGephiWorkspace=self.gephi_ws) self.logger.info('GephiStream connected {}'.format(self.gephi_uri))
from ws4py.client.threadedclient import WebSocketClient from GephiStreamer import Node, Edge, GephiStreamerManager import json t = GephiStreamerManager() class DummyClient(WebSocketClient): #Bootstrap to register to websocket def opened(self): self.send('{"op":"unconfirmed_sub"}') def closed(self, code, reason=None): print "Closed down", code, reason #When we receive a new blockchain def received_message(self, m): #Loading the data as json data = json.loads("%s" % m) print "==%s==" % data['x']['hash'] #Created the node that represent the transaction transactionNode = Node(data['x']['hash'], blue=1) #With some properties for prop in [ 'vin_sz', 'vout_sz', 'lock_time', 'relayed_by', 'tx_index', 'time' ]: transactionNode.property[prop] = data['x'][prop] #Hack to avoid "size" of the node transactionNode.property['transaction_size'] = data['x']['size'] #we type our node
:param: gs GraphVis instance :param: rgb node color :param: id_fcn function to generate node label ''' gnodes = make_gephi_nodes(G.nodes(), rgb=rgb, size=10) for k,v1 in gnodes.items(): gs.add_node(v1) try: for v2 in make_gephi_nodes(G[k].keys()).values(): # G[k] is networkx node neighbor dictionary gs.add_node(v2) gs.add_edge(Edge(v1, v2, False, weight=1)) gs.commit() except Exception, e: print "Unable to add", k print e print "Graph sent" return gnodes # quick and dirty setup/testing if __name__ == "__main__": import scratchpad G = scratchpad.load_fhx_graph('R-3') gs=GephiStreamerManager(iGephiUrl='Tannhauser:8080') send_graph(G, gs)