[installation] Init with inital config for global
This commit is contained in:
127
lib/python/licsar2caps/streammap.py
Normal file
127
lib/python/licsar2caps/streammap.py
Normal file
@ -0,0 +1,127 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
############################################################################
|
||||
# Copyright (C) 2024 by gempa GmbH #
|
||||
# #
|
||||
# All Rights Reserved. #
|
||||
# #
|
||||
# NOTICE: All information contained herein is, and remains #
|
||||
# the property of gempa GmbH and its suppliers, if any. The intellectual #
|
||||
# and technical concepts contained herein are proprietary to gempa GmbH #
|
||||
# and its suppliers. #
|
||||
# Dissemination of this information or reproduction of this material #
|
||||
# is strictly forbidden unless prior written permission is obtained #
|
||||
# from gempa GmbH. #
|
||||
############################################################################
|
||||
|
||||
import os
|
||||
|
||||
from seiscomp import logging
|
||||
|
||||
|
||||
class StreamMapItem:
|
||||
def __init__(self):
|
||||
self.networkCode = ""
|
||||
self.stationCode = ""
|
||||
self.locationCode = ""
|
||||
self.stationID = ""
|
||||
self.baseCode = None
|
||||
self.folder = None
|
||||
self.startTime = None
|
||||
self.endTime = None
|
||||
|
||||
|
||||
class StreamMap:
|
||||
# -------------------------------------------------------------------------
|
||||
def __init__(self):
|
||||
self.items = {}
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
def get(self, streamID):
|
||||
return self.items.get(streamID)
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
def read(self, filename):
|
||||
try:
|
||||
f = open(filename, "r", encoding="UTF-8")
|
||||
except Exception as err:
|
||||
logging.error(f"Stream map: Could not open file: {err}")
|
||||
return False
|
||||
|
||||
try:
|
||||
lineNo = -1
|
||||
for line in f:
|
||||
lineNo += 1
|
||||
line = line.strip()
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
|
||||
if len(line) == 0:
|
||||
continue
|
||||
|
||||
folder = line.strip()
|
||||
|
||||
toks = folder.split("_")
|
||||
tokCount = len(toks)
|
||||
if tokCount != 3:
|
||||
logging.error(
|
||||
f"Stream map: Invalid stream ID in line {lineNo}"
|
||||
)
|
||||
continue
|
||||
|
||||
item = StreamMapItem()
|
||||
item.networkCode = toks[0]
|
||||
item.stationCode = toks[1]
|
||||
item.locationCode = toks[2]
|
||||
item.baseCode = str(int(item.networkCode[0:3]))
|
||||
item.folder = folder
|
||||
item.stationID = (
|
||||
item.networkCode
|
||||
+ "."
|
||||
+ item.stationCode
|
||||
+ "."
|
||||
+ item.locationCode
|
||||
)
|
||||
|
||||
self.items[item.stationID] = item
|
||||
except IOError as err:
|
||||
logging.error(
|
||||
f"Stream map: Could not read stream map from file: {err}"
|
||||
)
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
if len(self.items) == 0:
|
||||
logging.info("No streams configured: Nothing todo")
|
||||
return False
|
||||
|
||||
logging.info("Configured stations")
|
||||
for k, _v in self.items.items():
|
||||
logging.info(f" + {k}")
|
||||
|
||||
logging.info("End")
|
||||
|
||||
return True
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
def write(self, filename):
|
||||
path = os.path.dirname(filename)
|
||||
if not path:
|
||||
return False
|
||||
|
||||
if not os.path.exists(path):
|
||||
try:
|
||||
os.makedirs(path)
|
||||
except Exception as err:
|
||||
logging.error(f"Stream map: Could not create directory: {err}")
|
||||
return False
|
||||
|
||||
try:
|
||||
with open(filename, "w", encoding="UTF-8") as f:
|
||||
for k, v in self.items.items():
|
||||
f.write(f"{k} {v.startTime.iso()} {v.endTime.iso()}\n")
|
||||
except Exception as err:
|
||||
logging.error(f"Stream map: Could not open file: {err}")
|
||||
return False
|
||||
|
||||
return True
|
||||
Reference in New Issue
Block a user