esi-db-snarf/generate.py

67 lines
1.6 KiB
Python
Raw Permalink Normal View History

2022-10-17 19:44:57 +02:00
#!/usr/bin/env python3
from jinja2 import Environment
import sqlite3
con = sqlite3.connect('new_eden.db')
cur = con.cursor()
def genLabel(name):
name = str.replace(name, "-","")
name = str.replace(name, " ","")
return name
def id2name(id):
r = cur.execute("SELECT * FROM systems WHERE id="+str(id))
row = r.fetchone()
return row[1]
systems = []
deps = []
processed = []
r = cur.execute("SELECT distinct id FROM systems WHERE region_id=10000027")
for system in r.fetchall():
processed.append(system[0])
temp_systems = {}
temp_systems['name'] = id2name(system[0])
temp_systems['label']= genLabel(id2name(system[0]))
temp_gateways = []
r = cur.execute( "SELECT systen_id_to FROM gates WHERE system_id_from="+str(system[0]) )
for gateway in r.fetchall():
temp_gateways.append(genLabel(id2name(gateway[0])))
deps.append(gateway[0])
temp_systems['gateways'] = temp_gateways
systems.append(temp_systems)
for dep in deps:
if not dep in processed:
temp_systems = {}
temp_systems['name'] = id2name(dep)
temp_systems['label']= genLabel(id2name(dep))
processed.append(dep)
systems.append(temp_systems)
con.close()
template = """
digraph {{name}} {
concentrate=true
layout=sfdp
overlap = false;
splines = true;
{% for system in systems %}
"{{system.label}}" [label="{{system.name}}", URL="https://evemaps.dotlan.net/system/{{system.name}}"]
{% for gateway in system.gateways %} "{{system.label}}" -> "{{gateway}}" [arrowhead="none"];
{% endfor %}{% endfor %}
}
"""
print(Environment().from_string(template).render(systems=systems))
# print(systems)