tle_fetcher.py 1.8 KB

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