6fc1423124
This commit makes Nodes special dicts that return None-like objects for inexistent keys, making it a dynamic attribute store. Also, it removes the D3MapBuilder and moves its logic to the Node and Link classes' newly introduced export() method. Only they need to be changed to populate the final nodes.json with more attributes.
36 lines
917 B
Python
Executable file
36 lines
917 B
Python
Executable file
#!/usr/bin/env python3
|
|
import subprocess
|
|
import json
|
|
|
|
class alfred:
|
|
def __init__(self,request_data_type = 158):
|
|
self.request_data_type = request_data_type
|
|
|
|
def aliases(self):
|
|
output = subprocess.check_output(["alfred-json","-r",str(self.request_data_type),"-f","json"])
|
|
alfred_data = json.loads(output.decode("utf-8"))
|
|
alias = {}
|
|
for mac,node in alfred_data.items():
|
|
node_alias = {}
|
|
for key in node:
|
|
node_alias[key] = node[key]
|
|
|
|
if 'location' in node:
|
|
node_alias['geo'] = [node['location']['latitude'], node['location']['longitude']]
|
|
|
|
try:
|
|
node_alias['id'] = node['network']['mac']
|
|
except KeyError:
|
|
pass
|
|
|
|
if 'hostname' in node:
|
|
node_alias['name'] = node['hostname']
|
|
if len(node_alias):
|
|
alias[mac] = node_alias
|
|
return alias
|
|
|
|
if __name__ == "__main__":
|
|
ad = alfred()
|
|
al = ad.aliases()
|
|
print(al)
|