generate.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/env python3
  2. from jinja2 import Environment
  3. import sqlite3
  4. con = sqlite3.connect('new_eden.db')
  5. cur = con.cursor()
  6. def genLabel(name):
  7. name = str.replace(name, "-","")
  8. name = str.replace(name, " ","")
  9. return name
  10. def id2name(id):
  11. r = cur.execute("SELECT * FROM systems WHERE id="+str(id))
  12. row = r.fetchone()
  13. return row[1]
  14. systems = []
  15. deps = []
  16. processed = []
  17. r = cur.execute("SELECT distinct id FROM systems WHERE region_id=10000027")
  18. for system in r.fetchall():
  19. processed.append(system[0])
  20. temp_systems = {}
  21. temp_systems['name'] = id2name(system[0])
  22. temp_systems['label']= genLabel(id2name(system[0]))
  23. temp_gateways = []
  24. r = cur.execute( "SELECT systen_id_to FROM gates WHERE system_id_from="+str(system[0]) )
  25. for gateway in r.fetchall():
  26. temp_gateways.append(genLabel(id2name(gateway[0])))
  27. deps.append(gateway[0])
  28. temp_systems['gateways'] = temp_gateways
  29. systems.append(temp_systems)
  30. for dep in deps:
  31. if not dep in processed:
  32. temp_systems = {}
  33. temp_systems['name'] = id2name(dep)
  34. temp_systems['label']= genLabel(id2name(dep))
  35. processed.append(dep)
  36. systems.append(temp_systems)
  37. con.close()
  38. template = """
  39. digraph {{name}} {
  40. concentrate=true
  41. layout=sfdp
  42. overlap = false;
  43. splines = true;
  44. {% for system in systems %}
  45. "{{system.label}}" [label="{{system.name}}", URL="https://evemaps.dotlan.net/system/{{system.name}}"]
  46. {% for gateway in system.gateways %} "{{system.label}}" -> "{{gateway}}" [arrowhead="none"];
  47. {% endfor %}{% endfor %}
  48. }
  49. """
  50. print(Environment().from_string(template).render(systems=systems))
  51. # print(systems)