tle_fetcher.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/usr/bin/python3
  2. from tle_database import TleDatabase
  3. from tle_reader import TleReader
  4. import logging
  5. import os
  6. CELESTRAK_ROOT = 'https://www.celestrak.com/NORAD/elements/'
  7. groups = [
  8. 'stations',
  9. 'weather',
  10. 'noaa',
  11. 'goes',
  12. 'resource',
  13. 'sarsat',
  14. 'dmc',
  15. 'tdrss',
  16. 'argos',
  17. 'planet',
  18. 'spire',
  19. 'geo',
  20. 'intelsat',
  21. 'ses',
  22. 'iridium',
  23. 'iridium-NEXT',
  24. 'starlink',
  25. 'oneweb',
  26. 'orbcomm',
  27. 'globalstar',
  28. 'swarm',
  29. 'amateur',
  30. 'x-comm',
  31. 'other-comm',
  32. 'satnogs',
  33. 'gorizont',
  34. 'raduga',
  35. 'molniya',
  36. 'gnss',
  37. 'gps-ops',
  38. 'glo-ops',
  39. 'galileo',
  40. 'beidou',
  41. 'sbas',
  42. 'nnss',
  43. 'musson',
  44. 'science',
  45. 'geodetic',
  46. 'engineering',
  47. 'education',
  48. 'military',
  49. 'radar',
  50. 'cubesat',
  51. 'other'
  52. ]
  53. log = logging.getLogger('tle_fetcher')
  54. log.setLevel(logging.INFO)
  55. time_string = "%m/%d/%Y %H:%M:%S %Z"
  56. formatter = logging.Formatter(
  57. fmt='{asctime} [{module}] {message}',
  58. datefmt=time_string,
  59. style='{')
  60. log_path = os.path.join(os.path.expanduser('~'), 'log/tle_fetcher.log')
  61. f_handler = logging.FileHandler(log_path, mode='a')
  62. f_handler.setLevel(logging.INFO)
  63. f_handler.setFormatter(formatter)
  64. log.addHandler(f_handler)
  65. c_handler = logging.StreamHandler()
  66. c_handler.setLevel(logging.INFO)
  67. c_handler.setFormatter(formatter)
  68. log.addHandler(c_handler)
  69. log.info("TLE fetcher started")
  70. def main(tle_rd: TleReader, tle_db: TleDatabase) -> None:
  71. tles = tle_rd.get_tles()
  72. tle_db.connect_db()
  73. tle_db.delete_rows()
  74. tle_db.update_tles(tles)
  75. for group in groups:
  76. gp = tle_rd.get_group(group)
  77. tle_db.update_sat_group(gp)
  78. tle_db.close_db()
  79. log.info("TLE fetcher completed")
  80. if __name__ == "__main__":
  81. main(TleReader(CELESTRAK_ROOT), TleDatabase())